2012-02-23 162 views
3

我正在使用FB PHP SDK和Code Igniter 2 Framework。Facebook PHP SDK - 註銷問題

我有一個註冊頁面,我可以顯示一個鏈接,供用戶點擊並批准該應用程序並授予其訪問其基本數據和電子郵件的權限。這似乎工作正常(雖然我已將它設置爲一個彈出窗口,它不會彈出,它只顯示在同一頁!)。

我的問題是,使用FB登錄後,頁面顯示一個註銷鏈接,點擊時應註銷它(因此再次顯示登錄鏈接),但它不起作用。

我有一個參數設置爲將頁面轉到某個頁面,並確實有效。只是出於某種原因,FB「會話」停留在周圍,用戶仍然使用FB登錄。

任何想法?

我在我的控制器代碼:

// Facebook Connect 
    $fb_config = array(
     'appId' => 'xxx', 
     'secret' => 'xxx' 
    ); 

    $this->load->library('facebook', $fb_config); 

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

    if ($user) { 
     try { 
      $data['user_profile'] = $this->facebook->api('/me'); 
     } catch (FacebookApiException $e) { 
      $user = null; 
     } 
    } 

    if ($user) { 
     $params = array('next' => 'http://localhost/game/index.php/game/login'); 
     $data['logout_url'] = $this->facebook->getLogoutUrl($params); 
    } else { 
     $params = array('scope' => 'email, publish_stream, publish_actions', 'display' => 'popup'); 
     $data['login_url'] = $this->facebook->getLoginUrl($params); 
    } 

末小問題 - 我應該甚至可以使用PHP SDK,或者我應該使用JavaScript SDK?我無法找到任何信息哪一個是最適合任何工作?! Confused.com

+0

如果你試圖隨PHP SDK中的例子嗎?它是否註銷當前用戶? – zerkms 2012-02-23 20:54:06

+0

剛試過。顯示相同的行爲。允許我在應用程序中註冊,登錄後,可以在頁面上查看詳細信息。點擊「註銷」什麼都不做,除了實際上我從FB中註銷(但不在測試PHP頁面!!!) – 2012-02-23 21:23:43

+0

文件php sdk github上的錯誤然後可能 – zerkms 2012-02-23 21:33:51

回答

3

我應該甚至使用PHP SDK,還是應該使用Javascript SDK?

如果您的應用程序可以使用JavaScript SDK而不是PHP SDK來創建,那就去做吧。保存您的服務器的CPU週期以獲取其他內容。它也允許你異步執行登錄,這可以很好。

複雜的應用程序通常同時使用JavaScript SDK和PHP SDK--在這種情況下,登錄通常在Javascript端處理(PHP SDK會自動知道用戶是否通過JavaScript登錄)。

1

我的問題是,被記錄在FB後,頁面顯示 註銷鏈接,點擊它的時候,應該將他們註銷(並因此表現出 登錄鏈接再次),但它不工作。

由您的網站造成的這個原因無法清除fb會話。在cakephp框架中使用facebook api時,我有同樣的問題。並且...我嘗試在用戶註銷時清除會話(我不喜歡它)。
我調試並看到,當facebook帳戶登錄成功時,$this->facebook->user()不爲空並且不會引發異常。

+0

是的,聽起來像是同一個問題。我剛剛設法清除了FB會話,但它搞砸了登錄! – 2012-02-24 17:32:20

+0

@Mr Pablo:完全不一樣的問題。正如你記得 - 你** **可以執行額外的API請求,這是不可能的 – zerkms 2012-02-24 21:14:13

+0

@MrPablo我不知道Code Igniter身份驗證。在cakephp中,我允許用戶使用user_id和facebook_id登錄(剛剛從facebook API請求)
NamLe 2012-02-27 02:25:41

0

您需要在註銷鏈接中添加一個活動的用戶訪問令牌才能使註銷鏈接生效。

參考:https://developers.facebook.com/docs/reference/php/facebook-getLogoutUrl/

例如:

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); 
};