2

我尝试使用 flask_oauthlib 访问我的 twitter api,但我得到的只是错误:无法生成请求令牌。这是代码。

    从 flask_oauthlib.client 导入 OAuth
    从烧瓶进口烧瓶,url_for,请求,jsonify

    app = Flask(__name__)
    oauth = OAuth()

    推特 = oauth.remote_app(
        '推特',
        base_url='https://api.twitter.com/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/authorize',
        consumer_key='dOJjyxB6gxXWTjdtfPUZcZPjl',
        consumer_secret='我没有告诉你',
    )


    @app.route('/登录')
    定义登录():
        return twitter.authorize(callback=url_for('authorized',
                                                  next=request.args.get('next') 或 request.referrer 或 None))


    @app.route('/授权')
    @twitter.authorized_handler
    def 授权(resp):
        如果响应为无:
            return '拒绝访问:错误=%s' % (
                request.args['错误']
            )
        如果“oauth_token”分别为:
            # session['example_oauth'] = resp
            打印(响应)
            返回 jsonify(resp)
        返回 str(resp)


    如果 __name__ == '__main__':
        app.run(端口=8000,调试=真)

这在使用http://term.ie/oauth/example/client.php时不起作用,我设法获得了请求令牌。

我用https://github.com/lepture/example-oauth1-server/blob/master/client.pyhttp://flask-oauthlib.readthedocs.io/en/latest/client.html启发了自己

编辑

奇怪的事实:我在这里尝试了代码:https ://github.com/lepture/flask-oauthlib/blob/master/example/twitter.py 我没有更改密钥和秘密并且它有效。

因此,我尝试将它们更改为我自己的凭据,但它停止了工作。实在看不懂。。。

4

2 回答 2

2

好的,我发现了问题。使用 flask-oauthlib 时,回调 URL 似乎是强制性的。所以我添加了一个假的,因为我还在本地主机上,它解决了这个问题。

于 2016-06-21T20:25:34.490 回答
0

万一有人发现这个问题。我是 Flask-OAuthlib 的作者。我建议您改用Authlib ,浏览https://github.com/lepture/authlib的源代码。https://github.com/authlib/loginpass中有许多内置的社交关系。

于 2018-05-21T16:27:18.343 回答