Google 사용자가 내 앱에 로그인 할 수 있도록 Google oauth api를 사용하려고합니다. 그리고 나는 Google의 OAuth2Login 문서를 모두 따라 왔습니다.google oauth api를 사용하여 access_token을 가져오고 'o/oauth2/approval`로 리디렉션하려고합니다.
코드를 가져 오는 데이 코드를 사용 했으므로 문제가 없습니다. 나는 /o/oauth2/token
API를 아래 등으로 access_token이를 얻으려고하면서
var u = 'https://accounts.google.com/o/oauth2/auth?'
+ '&response_type=code'
+ '&client_id=' + opts.googleClient
+ '&redirect_uri=' + redirectURI
+ '&scope=' + opts.scope
+ '&approval_prompt=force&access_type=offline';
는하지만 :
var u = 'https://accounts.google.com/o/oauth2/token?'
+ 'code=' + code
+ '&client_id=' + opts.googleClient
+ '&client_secret=' + opts.googleSecret
+ '&scope='
+ '&redirect_uri=' + redirectURI
+ '&grant_type=' + 'authorization_code';
request.post({url: u, json: true}, fn);
를 내가 확인했습니다 나에게
{
error: "invalid_request"
}
을 돌려 그 크롬 개발자 도구 요청 URL이 내가 게시하는 대신 https://accounts.google.com/o/oauth2/approval?as=-5013c18c497345fc&hl=en&pageId=none&xsrfsign=APsBz4gAAAAAUcwS1TxlojrAPVNCj7ntTlz1H4xQgysC
임을 나타내는 네트워크 바.
내 게시물 URL과 데이터가 정확히 Google oauthplayground에 있는지 확인할 수 있습니다. 그러나 그 결과는 완전히 다릅니다.
내가 잘못 했나요? 도와주세요.
답장을 보내 주셔서 감사합니다. 저는 실제로 nodejs를 사용하고 있습니다. 여기서는 [github gist] (https://gist.github.com/fraserxu/5881632)의 코드를 사용하고 있습니다. 나는'application.x-www-form-urlencoded' 호출을 만들기 위해'request'라는 노드 모듈을 사용하려했지만 동일한 결과를 얻었다. 매개 변수와 본문에 문제가 있는지 확인할 수 있습니까? 감사. – fraserxv
양식 데이터에서 "범위"를 제거하고 URL에서 "코드 ="를 양식 데이터로 옮깁니다. – aeijdenberg
그것은 작동합니다! 고맙습니다. Google은'application/x-www-form-urlencoded' 콘텐츠 유형 만 지원합니다. 하지만 oauthPlayground에서 작동하는 이유는 알 수 없습니다. 감사합니다. – fraserxv