현재 애플리케이션을 인증하기 위해 서버 측 OAuth2 플로우를 구현 중입니다.Google OAuth2 - 토큰에 대한 Exchange 액세스 코드 - 작동하지 않습니다.
JS 애플리케이션은 등록 된 CMS 계정 대신 YouTube 분석 데이터를 최종 사용자 (CMS 계정과 연결된 채널을 소유 한 사용자)에게 표시합니다. 따라서 인증 단계를 사용자가 완전히 숨길 필요가 있습니다. 일단 권한을 부여하려고 시도하면 '영구적 인'인증 코드를 사용하여 필요할 때 액세스 토큰을 검색합니다.
액세스 코드를 성공적으로 승인하고 검색 할 수 있습니다. 문제는 토큰에 대한 액세스 코드를 교환하려고 할 때 시작됩니다. 이 코드를 사용하고
이 같이 필요 달성하기 위해 HTTP POST 요청 ...
POST /o/oauth2/token HTTP/1.1
Host: accounts.google.com
Content-Type: application/x-www-form-urlencoded
code=4/P7q7W91a-oMsCeLvIaQm6bTrgtp7&
client_id=8819981768.apps.googleusercontent.com&
client_secret={client_secret}&
redirect_uri=https://oauth2-login-demo.appspot.com/code&
grant_type=authorization_code
이를 달성하기 위해 :
var myPOSTRequest = new XMLHttpRequest();
myPOSTRequest.open('POST', 'https://accounts.google.com/o/oauth2/token', true);
myPOSTRequest.setRequestHeader('content-type', 'application/x-www-form-urlencoded');
myPOSTRequest.send('code=' + myAuthCode + '&redirect_uri=http%3A%2F%2Flocalhost%2FCMSAuth3.html&client_id=626544306690-kn5m3vu0dcgb17au6m6pmr4giluf1cle.apps.googleusercontent.com&scope=&client_secret={my_client_secret}&grant_type=authorization_code');
내가 성공적으로 200 OK 응답을 얻을 수 있습니다 그러나이 요청에는 액세스 토큰이 반환되지 않으며 myPOSTRequest.responseText는 빈 문자열을 반환합니다.
나는 Google의 OAuth 놀이터에서 놀았으며 자신의 자격증 명을 사용하여 성공적으로 토큰을 얻을 수 있습니다.
여기에 뭔가가 있습니까?
귀하의 코드에서와 같이, 귀하는 보조금 유형으로 "인증 코드"를 사용하고 있습니다. – Emily
안녕하세요 에밀리, 잘못된 사과를 붙여 넣었습니다. grant_type = authorization_code를 사용하여 정확한 예를 수정했습니다. – locksem
실제 http 요청 및 응답을 붙여 넣습니다. 이것들을 Oauth Playground의 equivalents와 비교하십시오. – pinoyyid