Flask 和 Tweepy oAuth 错误 - 无法获取请求令牌
我在用Flask框架做一个练习项目,尝试使用tweepy进行身份验证。但是,当我试图用Tweepy和Flask进行OAuth认证时,出现了302的返回,提示无法获取访问令牌。请帮帮我。下面是我的代码和错误信息。
from flask import Flask, redirect, url_for, session, request, render_template, flash
import tweepy
import flask
app = Flask(__name__)
app.config.from_object('config')
oauth = OAuth()
consumer_key = app.config["CONSUMER_ID"]
consumer_secret = app.config["CONSUMER_SECRET"]
access_token_key = app.config["ACCESS_KEY"]
access_token_secret = app.config["ACCESS_SECRET"]
callback_url = 'http://localhost:5000/verify'
session = dict()
db = dict()
@app.route('/')
def send_token():
redirect_url = ""
auth = tweepy.OAuthHandler(consumer_key, consumer_secret, callback_url)
try:
#get the request tokens
redirect_url= auth.get_authorization_url()
session['request_token']= (auth.request_token.key,
auth.request_token.secret)
except tweepy.TweepError:
print 'Error! Failed to get request token'
#this is twitter's url for authentication
return flask.redirect(redirect_url)
@app.route("/verify")
def get_verification():
#get the verifier key from the request url
verifier= request.args['oauth_verifier']
auth = tweepy.OAuthHandler(CONSUMER_TOKEN, CONSUMER_SECRET)
token = session['request_token']
del session['request_token']
auth.set_request_token(token[0], token[1])
try:
auth.get_access_token(verifier)
except tweepy.TweepError:
print 'Error! Failed to get access token.'
#now you have access!
api = tweepy.API(auth)
#store in a db
db['api']=api
db['access_token_key']=auth.access_token.key
db['access_token_secret']=auth.access_token.secret
return flask.redirect(flask.url_for('index'))
@app.route("/index")
def index():
#auth done, app logic can begin
api = db['api']
#example, print your latest status posts
return flask.render_template('tweets.html', tweets=api.user_timeline())
if __name__ == '__main__':
app.run()
错误信息...
* Running on http://127.0.0.1:5000/
* Restarting with reloader
Error! Failed to get request token
127.0.0.1 - - [10/Jul/2014 20:16:14] "GET / HTTP/1.1" 302 -
Error! Failed to get request token
127.0.0.1 - - [10/Jul/2014 20:16:16] "GET / HTTP/1.1" 302 -
Error! Failed to get request token
127.0.0.1 - - [10/Jul/2014 20:16:18] "GET / HTTP/1.1" 302 -
Error! Failed to get request token
127.0.0.1 - - [10/Jul/2014 20:16:20] "GET / HTTP/1.1" 302 -
Error! Failed to get request token
127.0.0.1 - - [10/Jul/2014 20:16:21] "GET / HTTP/1.1" 302 -
Error! Failed to get request token
3 个回答
0
我注意到tweepy这个库需要更新一下。看起来OauthHandler这个东西在Python的文件结构中没有正确加载。我还在学习导入结构是怎么回事。
如果我去tweepy库安装的路径,把auth.py这个文件复制到我本地的工作目录,并把它重命名为auth_temp.py。那么我就可以顺利访问里面的OAuthHandler类了。
0
你的配置文件里的 consumer_key 和 consumer_secret 没有被正确读取。你可以试试把这两个密钥直接写在代码的开头来测试一下。其他的部分看起来都没问题,对我来说都能正常工作!
1
原来问题出在tweepy这个包没有在Pypi上更新到最新版本。我是从他们的GitHub仓库安装的,结果就正常工作了...