2012-07-01 41 views
0

我想在我的Flask/Python应用程序中执行的操作与我在PHP中完成的操作类似。在PHP中,我能够创建一个新的Facebook对象,如果用户已经授权应用程序并已登录到他们的Facebook帐户,他们的信息将被加载到对象中,他们不必点击“登录与Facebook“在网站上 - 它会自动意识到他们已经登录和授权。Python - 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')) 

有没有一种方法,我可以将它设置,以便我对象可以在整个这样的应用程序,允许自动登录作为我能在页面加载时执行此步骤而无需用户访问登录URL?

此刻,用户必须访问/登录才能检索他们的Facebook信息。是否有可能在PHP中这样做,它可以是整个脚本中使用的变量? - 对不起听起来多余,我不知道如何解释清楚。

在PHP中,一些示例代码如下所示 - 这将在每次页面加载时调用,而不需要用户访问/ login URL以使用他们的Facebook登录。

<?php 
if(!$this->getUser()){ 


    $facebook = new Facebook(array(
     'appId' => '', 
     'secret' => '', 
    )); 

    $this->fbuser = $facebook->getUser(); 

    if ($this->fbuser) { 
# etc.. 
?> 

回答

0

不太熟悉瓶,但在我看来,从逻辑上讲,你的未授权访问的处理器也可以先尝试登录拒绝他们的页面加载请求之前,使用Facebook的用户。