与Facebook认证具有Oauthlib身份验证时,在Facebook上建立关示例代码here的时候,我一直得到错误的“从Facebook的响应无效”时,“从Facebook无效的响应”。使用烧瓶Oauthlib
我列出以下相关代码的章节。
设置:
设置所述的Oauth请求对象。
不图:导航路线和瓶的应用程序初始化。
from flask_oauthlib.client import OAuth, OAuthException
oauth = OAuth()
facebook = oauth.remote_app('facebook',
base_url='https://graph.facebook.com/',
request_token_url=None,
access_token_url='/oauth/access_token',
authorize_url='https://www.facebook.com/dialog/oauth',
consumer_key=config.get("app_id"),
consumer_secret=config.get("app_secret"),
request_token_params={'scope': 'public_profile,email'}
)
@facebook.tokengetter
def get_facebook_token():
if current_user.is_authenticated():
return current_user.get_facebook_token()
else:
return None
登录处理程序:
发送用户位置,以便开始的过程中,随着网址附加到根URL facebook的回调。
@app.route('/facebook/login')
def facebook_login():
return facebook.authorize(callback="http://example.com%s" % url_for('facebook_callback'))
Facebook的回调,这个问题的根源:
在这里,我可以争取一个代码(大概是令牌)返回,但Oauthlib无法正确解析它。
@app.route('/facebook/callback')
def facebook_callback(response):
response = facebook.authorized_response()
if response is None:
flash("You denied the request to sign in.", "error")
return redirect(url_for('index'))
if isinstance(response, OAuthException):
flash("Access denied: %s" % response.message, "error")
return redirect(url_for('index'))
# Request fails here, returns the redirect above.
被引导到Facebook的后倾的要求ARGS我可以看到很清楚,并成功连接,还有一个很长的令牌返回到沿线的回调“?码= 1234567890,abcdefghijklmnop” ,但实际上尝试与此验证失败与“来自Facebook的无效回应”。
下面是一个简单的请求转储:
ImmutableMultiDict([('code', 'AQAPedwWavTb_cBx6NVy-qy3AL5YPr780oG5tA1LfITpVwkk-kr_4I0lG6B-vlhcYEubhuKhEM46bPs-1WpWUpJzcWfhkQ64lIkdLm9uSHSqeBHBM_6zw7SDpvVmGK-JKWBpAqRJuBKenl9zslQizthox96104iiul0uYQY67cmZgPXZi9uL-mcgZ5dRj387eKJIjNninBXxwCGgFkg5kLVHYt7t0ktUH58stYlxn2f98AXuSlrIvWsA5NeHsVbM8XY0XQrDrNbCvjDmEwHQGkZ3uZRbyaecN7MAi0bM0TrZzpuQ8j3M34DnQp_v9n4ktM4')])
曾使用过基于Twitter的样品的作品,我想这可能是一个可能的漏洞库,由于Facebook的API的变化类似的代码,但我将不胜感激任何指针!