【发布时间】:2013-04-12 17:29:25
【问题描述】:
当我向 facebook 执行 get_authorize_url 请求时,我被重定向到以下 URL(在浏览器中看到):
http://127.0.0.1:5000/#access_token=sdfsdfasfaf&expires_in=5849
但我无法在flask 中获取此access_token:它不在request.args 中,不在request.query_string 中,甚至在request.url 中也不存在。也许烧瓶遇到# 字符的问题?如何访问该查询参数?
这是我代码的相关部分(源自rauthfacebook-cli example):
# rauth OAuth 2.0 service wrapper
graph_url = 'https://graph.facebook.com/'
facebook = OAuth2Service(name='facebook',
authorize_url='https://www.facebook.com/dialog/oauth',
access_token_url=graph_url + 'oauth/access_token',
client_id=app.config['FB_CLIENT_ID'],
client_secret=app.config['FB_CLIENT_SECRET'],
base_url=graph_url)
...
@app.route('/facebook/login')
def login():
redirect_uri = url_for('authorized', _external=True)
params = {'scope': 'read_stream',
'response_type': 'token',
'redirect_uri': redirect_uri}
return redirect(facebook.get_authorize_url(**params))
@app.route('/facebook/authorized')
def authorized():
# I am not able to find the access_token
print dir(request)
print request.args
print request.query_string
print request.url
...
【问题讨论】:
-
我强烈建议使用
response_typecode而不是token,因为前者的流程往往更适合在命令行示例脚本中使用后者流程的Web 应用程序。 (请注意,cli 示例不打算用作网络应用程序的模型!)
标签: python facebook oauth flask rauth