2012-02-15 54 views
0

我一直在尋找並嘗試了幾個小時,但我無法弄清楚。 我使用Facebook應用程序獲取用戶的一些信息,因此用戶需要連接到應用程序。用戶第一次連接時,他需要在Facebook上給予應用程序許可。當用戶再次回來時,他需要再次單擊連接,但權限已被設置。連接到Facebook應用的時間超過一個會話

我想讓用戶連接的時間比會話長,所以他不需要每次訪問該網站時都點擊連接(在新會話中)。我已經閱讀了很多關於offline_access等的內容,但這已被棄用,可能不是我最後需要的。我也從2年前閱讀了一些解決方案,但他們不再工作。

一個例子來概括:

假設用戶訪問我的網站,我對他一無所知。幾天前他授予我的應用程序許可。我希望他不用做任何事情就能看到Hello和註銷鏈接。我開始懷疑這是否可能?

// Create our Application instance. 
$facebook = new Facebook(
    array(
    'appId' => xxxxxxxxxx, 
    'secret' => xxxxxxxxxx, 
) 
); 

// Get User ID 
$fbuser = $facebook->getUser(); 

if($fbuser) { 
    $logoutUrl = $facebook->getLogoutUrl(); 
    print 'Hello' . $logoutUrl; 
} else { 
    $loginUrl = $facebook->getLoginUrl(); 
} 

預先感謝您! 問候

+0

多久你已經爲到期設置你的網站的Cookie? – CoderFromOuterSpace 2012-02-15 16:31:43

+0

你需要你自己的會議,沒有ifs或buts關於它。 – 2012-02-15 16:34:38

回答

0

我不認爲PHP是去與這一個辦法...... 您應該使用與您可以登錄的用戶facebook的JavaScript的SDK(https://developers.facebook.com/docs/reference/javascript/)..

如果用戶已經登錄到Facebook並且有一個會話(當然,之前已經授權您的應用程序),那麼您已經設置好了,否則用戶將不得不登錄Facebook或授權您的應用程序。

使用FB.getLoginStatus檢查,如果用戶登錄,如果他不是那麼一個按鈕呈現他將調用FB.login方法

0

是的,你應該只使用Facebook來獲得某些數據,那麼你應該存儲所有這些數據與您自己的數據庫中的唯一fb_user_id併爲用戶創建您自己的會話!

因此,在Facebook註冊社交插件期間,您可以在自己的數據庫中創建一個用戶,然後在每次登錄時實際創建自己的會話,如果您確保安全,則可以依靠自己的會話,如果使用任何Facebook API並且會話已關閉,它將在Facebook服務器上處理它,它可能會要求用戶登錄,如果他們從Facebook註銷,但大多數人甚至不登出,因此只會重新創建會話!

所以像:

// Create our Application instance. 
$facebook = new Facebook(
    array(
    'appId' => xxxxxxxxxx, 
    'secret' => xxxxxxxxxx, 
) 
); 

inlcude "my_session_stuff.inc"; 

// Get User ID 
if(!$user->user_exists){ 
    $fbuser = $facebook->getUser(); 
}else{ 
    $fbuser = $user; 
} 

if($fbuser) { 
    $logoutUrl = $facebook->getLogoutUrl(); 
    $expires = (60*60*24*365);//expire in a year 
    $user = $myownSession->log_user_out($logoutUrl); 
} else { 
    $loginUrl = $facebook->getLoginUrl(); 
    $user = $myownSession->log_user_in($getLoginUrl,$expires); 
} 
+0

+1是啊,臉書不會爲你編程整個網站大聲笑。這個答案表明你需要自己的會話 – 2012-02-15 16:34:13