0

我在 virtualenv 中使用 Python3 + Flask + OAuthlib 来获取 Twitter 令牌和 token_secret 以便开始使用我的应用程序。

我正在复制OAuthlib twitter上托管的示例,只是替换了我的 Flask 应用程序的 url。

我还尝试在我的 twitter 应用程序设置中设置正确的回调 url,或者使用有login()函数的 url,或者使用有@twitter.authorized_handler但没有成功的 url。

我收到了这个错误:

File "C:\Users\\pyws\flask_ws\flask_engine\lib\site-packages\flask\app.py", line 1461, in dispatch_request return self.view_functions[rule.endpoint](**req.view_args)
File "C:\Users\\pyws\flask_ws\flask_engine\lib\site-packages\flask_oauthlib\client.py", line 587, in decorated data = self.handle_oauth1_response()
File "C:\Users\\pyws\flask_ws\flask_engine\lib\site-packages\flask_oauthlib\client.py", line 526, in handle_oauth1_response _encode(self.access_token_method)
File "C:\Users\\pyws\flask_ws\flask_engine\lib\site-packages\oauthlib\oauth1\rfc5849\__init__.py", line 273, in sign
elif http_method.upper() in ('GET', 'HEAD') and has_params: AttributeError: 'NoneType' object has no attribute 'upper'`

我没有收到错误:/提前感谢您的帮助

4

1 回答 1

2

从查看 oauthlib 源代码看来,该access_token_method属性未在远程应用程序中定义。该文档说它默认为'GET',但这似乎不适用于您的情况。

尝试将其明确添加到您的remote_app()定义中。

twitter = oauth.remote_app(
    'twitter',
    consumer_key='xBeXxg9lyElUgwZT6AZ0A',
    consumer_secret='aawnSpNTOVuDCjx7HMh6uSXetjNN8zWLpZwCEU4LBrk',
    base_url='https://api.twitter.com/1.1/',
    request_token_url='https://api.twitter.com/oauth/request_token',
    access_token_url='https://api.twitter.com/oauth/access_token',
    authorize_url='https://api.twitter.com/oauth/authenticate',
    access_token_method = 'GET' # <--- add this line
)
于 2013-10-29T00:36:04.180 回答