TokenInfoにアクセスするには、Python用のGoogle APIクライアントライブラリ(oauth2clientアプリエンジン)を使用します。oauth2アクセストークンを受け取りましたが、このコードは正常に機能します。
@decorator.oauth_aware
def get(self):
....
....
if decorator.has_credentials() :
body = urllib.urlencode({'access_token': decorator.credentials.access_token})
http = httplib2.Http()
resp, content = http.request("https://www.googleapis.com/oauth2/v1/tokeninfo",method="POST", body=body)
しかし、デコレータを使用して許可されたhttpインスタンスを作成すると、次のようになります。
@decorator.oauth_aware
def get(self):
....
....
if decorator.has_credentials() :
http = decorator.http()
resp, content = http.request("https://www.googleapis.com/oauth2/v1/tokeninfo",method="POST")
私は受け取ります:
'status' : '400'
{
"error": "invalid_token",
"error_description": "either access_token or id_token required"
}
UPDATE-1
私はoauth2client\client.pyを調べました:decorator.http()はリクエストを承認するだけでなく、有効期限が切れている場合はaccess_tokenを更新します。
これを解決する方法についてのアイデアを歓迎しますか?ご協力いただきありがとうございます。
UPDATE-2および解決済み
TokeInfoAPIには認証は必要ありません。リクエスト自体にaccess_tokenが含まれている必要があります。Authorizationヘッダーは無視されます。