2012-06-22 75 views
1

我使用的是FB PHP SDK來獲得用戶的FB訪問令牌等方式退出的Facebook的無法使用FB PHP SDK

我做拿走我所有的信息後,我試圖註銷用戶,但它不起作用。出於調試目的,我這樣做:

$facebook = new Facebook(array(
     'appId' => FB_APP_ID, 
     'secret' => FB_SECRET 
    )); 
$params = array('next' => site_url('welcome/logout')); 
$link = $facebook->getLogoutUrl($params); // $params is optional. 
echo $link; 

這給了我這樣一個鏈接:

https://www.facebook.com/logout.php?next=http%3A%2F%2Fexample.com%2Fwelcome%2Flogout&access_token=xxxxxxxx 

如果我指出我的瀏覽器到URL,我重定向回我的回調URL,但立即之後,如果我去Facebook.com,我仍然登錄。

我在做什麼錯?

我試過使用JS SDK,但不工作,因爲一切正在完成服務器端(使用PHP SDK)。所以,當我使用JS SDK調用FB.logout()時,它說Logout called without access token

編輯

我,然後再繼續想,可能有人證實了這一點: 當我跟着註銷URL,它實際登錄我出去的Facebook,還是剛剛結束我的應用程序和用戶之間的會話?

如果是這樣,是否有任何方法可以完全從Facebook註銷用戶? (我猜不是)。

回答

1

RE:使用JS SDK,您可以同時使用JS SDK和PHP SDK,現在可以互換(並且已經使用了大約一年)。所以如果JS方法更適合你,我建議你嘗試一下。

重新編輯:是的,它會將您完全註銷Facebook。

現在打開功能問題。你在開發過程中發生的情景,但我從來沒有指出爲什麼。我認爲這與cookie存儲在錯誤的域(facebook存儲它認爲是基本域的內容有關,如果你在基本域中操作,或者在同一個基本域上有兩個應用程序,它會將它們放入一個捻)。

清除cookies會對其進行排序。然後確保你不要在Facebook的設置中操縱域名,它有望不會再出現。 (我說希望,因爲我從來沒有準確地指出觸發器,但我從來沒有發生過一個穩定的應用程序,一旦開發完成。)

+0

我無法弄清楚如何傳遞接收令牌將PHP SDK發送到JS SDK。但是,如果我使用JS SDK進行登錄(然後將令牌傳遞給PHP腳本以獲取擴展令牌),那麼運行良好,包括註銷功能。所以,我只是決定去JS SDK。無論如何感謝您的幫助。 (PS - 我直接在我的Web服務器上開發,所以它不是開發環境) – xbonez