2012-07-01 103 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的用戶。