2

現在、アプリケーションを承認するためにサーバー側の OAuth2 フローを実装中です。

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');

この Request に対する 200 OK 応答を正常に取得できますが、アクセス トークンは返されず、myPOSTRequest.responseText は空の文字列を返します。

Google の OAuth Playground で遊んだことがありますが、自分の資格情報を使用してトークンを正常に取得できます。

ここで何か不足していますか?

4

2 に答える 2