2012-04-03 104 views
3

很抱歉的混亂稱號,這裏的情況...Facebook的PHP:用戶退出Facebook上後,他們無法登錄到我的應用程序與其他用戶

  1. 用戶登錄到我的Facebook應用程序
  2. 用戶登出Facebook上的....別人來給電腦...
  3. 第二個用戶試圖訪問我的應用程序(不同的Facebook賬號,同一臺計算機上)
  4. 他們不能.. 。腳本獲取前一個用戶的訪問令牌。

我正在使用facebook PHP SDK。

當用戶第一次嘗試登錄時,我執行以下操作;

unset($_REQUEST); 
unset($_COOKIE); //don't know if both are necessary 
session_destroy(); 

但不知何故新的FB帳戶仍然是公認的最後一個(我獲得用戶以前記錄的訪問令牌,該令牌拋出一個異常,當我嘗試使用它,因爲用戶沒有登錄了) 。

我是否需要使用註銷功能?我假設用戶從Facebook登錄,這不是我想要做的,只需從我的應用程序中的新用戶開始。

任何想法?自從我清理了所有內容後,我對這些數據持續存在的地方感到非常失望。希望它有些愚蠢,但我想我會問,如果有人知道任何事情。

+0

當第二個用戶試圖登錄時會發生什麼?你有任何錯誤? – Ronnie 2012-04-03 20:28:33

+0

它說無效的用戶授權令牌 – 2012-04-03 20:49:28

回答

0

薩布麗娜

使用與有效的用戶訪問令牌註銷應該正常工作。下面是我用什麼「除非脫機訪問被燙過的」


$user = $facebook->getUser(); 
$access_token = $_SESSION['fb_135669679827333_access_token']; 
if ($user) { 
    try { 
    // Proceed knowing you have a logged in user who's authenticated. 
    $user_profile = $facebook->api('/me'); 
    } catch (FacebookApiException $e) { 
    error_log($e); 
    $user = null; 
    } 
} 
if ($user) { 
    $params = array (
    access_token => ''.$access_token.'' 
); 
    $logoutUrl = $facebook->getLogoutUrl($params); 
} else { 
$params = array(
    scope => 'read_stream,publish_stream,publish_actions,read_friendlists' 
    //redirect_uri => $url 
); 
    $loginUrl = $facebook->getLoginUrl($params); 
}; 
+0

謝謝,但我不想從用戶登出Facebook,只是出我的應用程序。 – 2012-04-04 10:40:08

1

這是似乎把工作進行到底:

$fb_key = 'fbsr_'.$facebookConfig['app_id']; 
setcookie($fb_key, '', time()-3600); 
$facebook->destroySession(); 
+0

這最終導致了比它值得的更多的問題。最後,我轉而使用js授權,並解決了我所有的問題。 – 2012-06-21 10:46:21

0

謝謝,但我不希望記錄的用戶離開了Facebook,就在我的應用程序之外。 - Sabrina Gelbart Apr 4 at 10:40

與您的問題相矛盾,做$ this-> facebook-> destroySession(); 將用戶註銷到Facebook而不是Facebook,如果另一個用戶想要使用這臺計算機,他們應該從他們的Facebook帳戶註銷=新用戶可以登錄到您的網站。

你不希望用戶的Facebook登出Facebook.com時註銷他們嗎?那對我來說會很沮喪

相關問題