使用Flask OAuth请求数据时,Unicode对象必须在哈希之前进行编码



我正在使用Flask OAuth将Google的登录与Flask站点集成。

一切都很好。我可以在没有任何困难的情况下授权登录并取回代币等。但是,当我使用Flask OAuth的get方法请求登录用户的电子邮件地址时,我会收到一个错误:

TypeError: Unicode-objects must be encoded before hashing

我正在使用Python3,这有点Python版本问题的味道,但我不知道我需要更改什么。

我使用的代码是:

def get_additional_data(self):
    access_token = session.get('oauth_token')
    headers = {'Authorization': 'OAuth ' + access_token[0]}
    return self.service.get(
        'https://www.googleapis.com/oauth2/v1/userinfo', None,
        headers=headers)

我不确定我能在那个请求中编码什么。即使我没有传递头,我也会得到同样的错误(而不是无效的请求或类似的东西)。

我已经在oauth2/__init__.py上运行了2to3,建议的调整非常小,不应该阻止代码在Python 3中运行。此外,与OAuth2相关的其他一切都在工作。

坏消息是,这个问题的解决方案正在切换到Flask OAuthlib。

好消息是,它只需要从Flask OAuth进行很少的更改即可使其工作。

最新更新