当使用 Flask-OAuth 请求数据时,Unicode-objects 必须在散列之前编码
Unicode-objects must be encoded before hashing when requesting data using Flask-OAuth
我正在使用 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)
我不确定我可以在那个请求中编码什么。即使我没有通过 headers 我也会得到同样的错误(而不是无效请求或类似的东西)。
我在 oauth2/__init__.py
上 运行 2to3,建议的调整非常小,不应该阻止 运行ning 在 Python 3 中的代码。此外,与 OAuth2 相关的所有其他内容均正常工作。
坏消息是这个问题的解决方案正在切换到 Flask-OAuthlib。
好消息是它只需要对 Flask-OAuth 进行很少的改动就可以正常工作。
我正在使用 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)
我不确定我可以在那个请求中编码什么。即使我没有通过 headers 我也会得到同样的错误(而不是无效请求或类似的东西)。
我在 oauth2/__init__.py
上 运行 2to3,建议的调整非常小,不应该阻止 运行ning 在 Python 3 中的代码。此外,与 OAuth2 相关的所有其他内容均正常工作。
坏消息是这个问题的解决方案正在切换到 Flask-OAuthlib。
好消息是它只需要对 Flask-OAuth 进行很少的改动就可以正常工作。