要访问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 AND SOLVED
TokeInfo API不需要任何授权。请求本身必须包含access_token。授权标头被忽略。
答案 0 :(得分:2)
我研究过oauth2client \ client.py:decorator.http()不仅授权请求,还会刷新access_token(如果已过期)。
我非常欢迎如何解决这个问题的想法?谢谢你的帮助。
更新并已解决
TokeInfo API不需要任何授权。请求本身必须包含access_token。授权标头被忽略。