无法使用decorator.http()授权tokeninfo oauth2请求

时间:2012-10-16 12:57:33

标签: python google-app-engine oauth oauth-2.0

要访问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。授权标头被忽略。

1 个答案:

答案 0 :(得分:2)

我研究过oauth2client \ client.py:decorator.http()不仅授权请求,还会刷新access_token(如果已过期)。

我非常欢迎如何解决这个问题的想法?谢谢你的帮助。

更新并已解决

TokeInfo API不需要任何授权。请求本身必须包含access_token。授权标头被忽略。