2012-01-18 88 views
0

我在具有一個用戶登錄的問題:Facebook PHP。登錄和重定向後,用戶需要手動刷新頁面

1)點擊Facebook登錄按鈕

2)用戶填寫的信息在Facebook網站

3)用戶被重定向到我的網站

4),然後運行這些代碼:

if ($user) 
{  
    try 
    { 
     // Proceed knowing you have a logged in user who's authenticated. 
     $user_profile = $facebook->api('/me'); 
     $fb_user_id = $user_profile['id']; 
     ... 

釷eapi致電引發錯誤:

OAuthException:必須使用活動訪問令牌來查詢有關當前用戶的信息。

5)用戶,就好像他們從來沒有登錄進行處理。

6)手動刷新頁面導致被識別的會話和API調用不會引發錯誤。

這是怎麼回事?我需要延遲嗎?

+0

你用什麼來處理登錄? 'Facebook :: getLoginUrl'(PHP-SDK)或'FB.login'(JS-SDK)? – 2012-01-18 16:04:49

+0

$ user = $ facebook-> getUser(); – lewicki 2012-01-18 16:07:02

+0

我的意思是別的。你的登錄按鈕做什麼?它是'fb:login-button',用'getLoginUrl'創建的鏈接或點擊時綁定了'FB.login'? – 2012-01-18 16:09:56

回答

-1

我用的是FB JS庫不正確。

編輯: 我不記得具體細節,但我會盡我所能

我使用的PHP SDK,看看如果用戶通過Facebook登錄,如果是,保存會話並存儲cookie。 JavaScript SDK被用於通過Facebook登錄用戶,然後回調到登錄頁面來更新我的服務器和存儲會話變量。從我記得的東西中,我發現某些東西被稱爲無序,給我一個getuser問題。重新讀取sdk給出的示例文件後,它開始工作。

+0

對於使用PHP SDK的用戶來說,這不是一個好的解決方案。除了不受歡迎的JavaScript依賴項之外,如果您使用PHP SDK( - > getLoginUrl())登錄,然後使用JS SDK在登錄後刷新頁面,登錄後有一段時間,當用戶想知道登錄是否有效時,用戶有時間點擊在鏈接上並在頁面之間進行交互,然後在操作中突然重定向。 – 2012-04-22 18:04:28

0

我可能會爲你解答。 擺弄同樣的問題後(​​成功登錄後,不刷新)。 我嘗試添加window.location.reload()在登錄事件無濟於事

這一點,但是,似乎這樣的伎倆對我來說:

FB.Event.subscribe('auth.login', function(response) { 
    window.location.href=window.location.href; 
}