我正在使用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进行很少的更改即可使其工作。