Python 如何使用Google API在OAuth 2.0中传递“Authorization”头值

Python 如何使用Google API在OAuth 2.0中传递“Authorization”头值,python,oauth-2.0,tornado,Python,Oauth 2.0,Tornado,我正在尝试使用OAuth 1.0和2.0访问Google的API。在这两种情况下,我需要在标题中的授权字段中填入值“OAuth”,后跟访问令牌。我尝试了下面的方法,但Google向我抛出了一个错误,说授权头值有问题。我正在使用Python Tornado additional_headers = { "Authorization": "OAuth "+GoogleOAuth2Mixin.access_token, "Accept-Encoding": None

我正在尝试使用OAuth 1.0和2.0访问Google的API。在这两种情况下,我需要在标题中的授权字段中填入值“OAuth”,后跟访问令牌。我尝试了下面的方法,但Google向我抛出了一个错误,说授权头值有问题。我正在使用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_头',但都不起作用。什么是准确的方法

这是因为它使用帐户电子邮件地址作为UID,并且在身份验证流期间默认调用userinfo服务,因此您需要在范围列表中包含userinfo.email,否则身份验证流将引发异常并返回令牌失败


如果您正在使用,请确保在左栏的“选择并授权API”下检查Userinfo电子邮件以及您要使用的API。希望这有帮助。

我也有同样的问题。如果将“承载者”作为前缀包含,则它可以工作

Authorization: Bearer 0b79bab50daca910b000d4f1a2b675d604257e42

您得到的确切错误是什么?这是我看到的错误:{错误:{错误:[{域:com.google.auth,原因:invalidAuthentication,消息:无效令牌,位置类型:header,位置:Authorization}],代码:401,消息:无效令牌}在我成功验证之后,我看到了这个错误-我不认为GoogleOAuth2Mixin.access_令牌是获取访问令牌的正确方法。我还没有测试过这个,但是您应该能够从get_authenticated_user返回的用户信息中获取it。