2012-02-04 77 views
1

我试图在OAuth 1.0和2.0版本中访问Google的API,在两种情况下,我需要在值为'OAuth'的标头中填充授权字段,然后是访问令牌。我尝试了以下方法,但Google向我发出一个错误,指出Authorization标头值存在问题。我使用Python的龙卷风如何在OAuth 2.0中使用Google API传递“授权”标头值

additional_headers = { 
     "Authorization": "OAuth "+GoogleOAuth2Mixin.access_token, 
     "Accept-Encoding": None 
    } 
    h = httputil.HTTPHeaders() 
    h.parse_line("Authorization: OAuth "+GoogleOAuth2Mixin.access_token) 
    request = httpclient.HTTPRequest(self._USER_INFO_URL+"?access_token="+GoogleOAuth2Mixin.access_token, method="GET", headers=h) 
    self.httpclient_instance.fetch(
     request, 
     self.async_callback(callback) 
    ) 

我试着用这两种方法,通过传球头球“H”和“additional_headers”,但它不工作。什么是准确的方法?

+0

你得到了什么确切的错误? – Drahkar 2012-02-04 22:34:36

+0

这是错误我看到: { “错误”:{ “错误”:[{ “域”: “com.google.auth”, “原因”: “invalidAuthentication”, “消息“: “无效的标记”, “的locationType”: “首标”, “位置”: “授权” } ], “代码”:401, “消息”: “无效的标记” } } – 2012-02-04 22:45:35

+0

我在成功验证后发现此错误 - https://www.googleapis.com/oauth2/v1/tokeninfo – 2012-02-04 22:49:50

回答

0

这是因为它使用帐户电子邮件地址作为UID,并且它在认证流程期间默认调用userinfo服务,因此您需要在您的作用域列表中包含“userinfo.email”,否则认证流程将引发异常并且未能返回令牌。

如果您使用的是OAuth 2.0 playground,请确保在选择并授权左边栏上的API以及您要使用的API下的“Userinfo-Email”。希望这可以帮助。

7

我有同样的问题。如果包含“承载”作为前缀,它将起作用。

Authorization: Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 
+0

这个答案为我解决了这个问题。谢谢 – 2016-07-28 14:37:57