我是Flask的新手,我正在尝试使用Twython对Twitter进行oauth。以下是我的代码(开发版本):
OAUTH_TOKEN = ''
OAUTH_TOKEN_SECRET = ''
callback_url = 'http://127.0.0.1:5000/verify'
@app.route('/')
def hello(name=None):
return render_template('index.html', name=name)
@app.route('/auth', methods=['POST'])
@cross_origin()
def obtain_auth_url():
global OAUTH_TOKEN, OAUTH_TOKEN_SECRET
social_network = request.get_json()['social_network']
if social_network == 'facebook':
return ''
elif social_network == 'twitter':
twitter = Twython(APP_KEY, APP_SECRET)
auth = twitter.get_authentication_tokens(callback_url)
OAUTH_TOKEN = auth['oauth_token']
OAUTH_TOKEN_SECRET = auth['oauth_token_secret']
redirect_url= auth['auth_url']
response = redirect(redirect_url)
response.headers = {'Access-Control-Allow-Origin': 'https://api.twitter.com/'}
print('redirect_url: ',redirect_url)
return response
@app.route("/verify")
def get_verification():
global OAUTH_TOKEN
global OAUTH_TOKEN_SECRET
twitter = Twython(APP_KEY, APP_SECRET,OAUTH_TOKEN, OAUTH_TOKEN_SECRET)
final_step = twitter.get_authorized_tokens(request.args['oauth_verifier'])
OAUTH_TOKEN2 = final_step['oauth_token']
OAUTH_TOKEN_SECRET2 = final_step['oauth_token_secret']
return 'OK!</br> OAUTH TOKEN:' + OAUTH_TOKEN2 +'</br> OAUTH TOKEN SECRET: '+ OAUTH_TOKEN_SECRET2
请注意,在代码中,我添加了标题Access-Control-Allow-Origin
以启用重定向到twitter api域。如果我不包括标题,它将引发跨源块错误。
但是,在浏览器(Firefox)上是这样说的:
XML解析错误:语法错误位置:http://127.0.0.1:5000/auth 第1行,第55列:
很显然,已经到达端点/auth
,因为我可以通过日志看到重定向URL,但是我不明白为什么会出现错误。
请帮忙。