如何在OAuth 2.0中使用Google APIs传递'Authorization'头值

4 投票
2 回答
12534 浏览
提问于 2025-04-17 12:18

我正在尝试使用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

撰写回答