我想在我的 Flask/Python 应用程序中执行的操作与我在 PHP 中执行的操作类似。在 PHP 中,我能够创建一个新的 facebook 对象,如果用户已经授权该应用程序并且已经登录到他们的 Facebook 帐户,他们的信息将被加载到该对象中,他们不必单击“登录”在网站上使用 Facebook”——它会自动意识到他们已经登录并获得授权。
使用我的 Python 应用程序,我正在使用https://github.com/pythonforfacebook/facebook-sdk/
@app.route('/login')
def login():
return facebook.authorize(callback=url_for('facebook_authorized',
next=request.args.get('next') or request.referrer or None,
_external=True))
@app.route('/login/authorized')
@facebook.authorized_handler
def facebook_authorized(resp):
if resp is None:
return 'Access denied: reason=%s error=%s' % (
request.args['error_reason'],
request.args['error_description']
)
session['oauth_token'] = (resp['access_token'], '')
me = facebook.get('/me')
usr = Users.query.filter_by(fb_id=me.data['id']).first()
if (hasattr(usr, 'fb_id'))==False:
# Find them in our database and log them in
else:
# Sign them up
return redirect(url_for('home'))
有没有一种方法可以设置它,以便可以在整个应用程序中使用 me 对象,从而允许自动登录,因为我可以在页面加载时执行此步骤而无需用户访问登录 URL?
目前,用户必须访问 /login 才能检索他们的 Facebook 信息。是否可以像在 PHP 中那样执行此操作,它可以是整个脚本中使用的变量?- 抱歉听起来多余,我不知道如何解释清楚。
在 PHP 中,一些示例代码如下所示 - 这将在每次页面加载时调用,而不需要用户访问 /login URL 以使用他们的 Facebook 登录。
<?php
if(!$this->getUser()){
$facebook = new Facebook(array(
'appId' => '',
'secret' => '',
));
$this->fbuser = $facebook->getUser();
if ($this->fbuser) {
# etc..
?>