如何在OAuth 2.0中使用Google APIs传递'Authorization'头值
我正在尝试使用OAuth 1.0和2.0访问谷歌的API。在这两种情况下,我都需要在请求的头部填入一个叫做Authorization的字段,内容是'OAuth'后面跟着访问令牌。我试过一种方法,但谷歌给我报错,说Authorization头部的值有问题。我使用的是Python-Tornado。
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',但都不行。那到底正确的方法是什么呢?
2 个回答
0
这是因为它把账户的电子邮件地址当作用户的唯一标识符(UID),而在认证过程中默认会调用用户信息服务。所以你需要在权限列表中加入“userinfo.email”,否则认证流程会出错,无法返回令牌。
如果你在使用OAuth 2.0 playground,记得在左侧的“选择和授权API”中勾选“Userinfo-Email”,同时选择你想使用的API。希望这能帮到你。
14
我也遇到过同样的问题。如果在前面加上'Bearer ',就能正常工作了。
Authorization: Bearer 0b79bab50daca910b000d4f1a2b675d604257e42