0

我使用Yii作爲框架,但我認爲這不會成爲問題。Facebook給我兩個不同的acces令牌,PHP SDK

此時我使用PHP SDK從用戶獲取帳戶信息,這在我的用戶首次登錄時工作正常。但1或2小時後,訪問令牌過期,我得到一個錯誤(這並不奇怪)。

但是,這裏是我陷入困境,我可以想到2個解決方案,但我都不知道如何去做。首先讓我介紹我的一些代碼:

要登錄到我的應用程序的用戶被髮送到FacebookLogin()行動:

public function actionFacebookLogin() 
{ 
    $my_url = 'http://***.***.nl/app/facebook-popup.php'; 
    $permissions = 'read_insights, publish_actions, manage_pages, email'; 
    $loginUrl = Yii::app()->facebook->getLoginUrl(array('scope' => $permissions, 'display' => 'popup', 'redirect_uri' => $my_url)); 
    echo '<script> window.location="'.$loginUrl.'"</script>'; 
} 

用戶授予適當的權限後,用戶發送到Login()行動:

public function actionLogin() { 
    $facebookID = Yii::app()->facebook->getUser(); 
    $accessToken = Yii::app()->facebook->getAccessToken(); 
} 

(登錄操作的其餘部分並不重要。)

現在,在這一點上,->getAccessToken()樂趣ction給了我一個適當的access_token,並且使用壽命很短。這樣可以,除非用戶在我的頁面上使用1或2個小時以上,「現在有些奇怪的東西*之後,用戶必須註銷並重新登錄。然後,我仍然收到錯誤信息,除非大約10分鐘後,我收到新的access_token這也給予了我所需要的權限。

所以解決這個我想到了2個解決方案,我無法找到使用這種正確的做法。

首先,最簡單的一個。 當我去到Graph API Explorer和使用access_token我的應用程序給我我得到的信息,但是當我嘗試調試access_token它顯示access_token有一個期待日期但是當我使用相同的Graph API Explorer並讓它自己生成一個access_token我得到了一個access_token根本不會過期。

作爲詢問的更新我的handlings與Graph API Explorer 我去API瀏覽器和如何更改應用到我的web應用程序。然後它得到一個正常的access_token自動填充。當我按「調試」按鈕它說,這access_token有一個期待日期。當我然後回到資源管理器並按下「獲取訪問令牌」按鈕時,它給了我另一個。當我再次按下「調試」按鈕時,它表示這個access_token沒有期待日期。如果我可以使用這個,那將會很棒。

所以我的第一個解決方案是獲取最後的access_token(如果可能)並將其存儲在我的數據庫中。然後在需要時使用Facebook PHP SDK ->setAccessToken()函數。但是怎麼樣?我沒有線索!

我想到的第二個解決方案。 我也可以做一個init()函數,如果我們得到一個有效的access_token,並且如果沒有得到一個新的或者刷新當前的過期的,就會檢查每一個動作。這將有更多的服務器負載,然後第一個解決方案,並與第一個解決方案相同,我不知道如何實現這一點。

我認爲主要問題是我發現Facebook文檔有點難以理解,我不知道從哪裏開始。

任何輸入將非常appriciated!

+0

本段「首先最簡單的一個......」令人困惑。顯然有兩個不同的電話在這裏工作。您需要在圖表資源管理器中明確說明您爲每項操作做了什麼。 – phwd 2013-02-12 12:16:04

+0

編輯我的帖子,感謝您的反饋。希望這已經夠清楚了。 – Augus 2013-02-12 12:37:32

回答

0

您可以延長訪問令牌的到期時間,如下所述:https://developers.facebook.com/roadmap/offline-access-removal/

或者你也可以嵌入JS SDK,它在每一頁上的通話將獲得一個新的短暫訪問令牌,如果前一已過期。 (並通過cookie與PHP SDK共享。)

+0

如果我嵌入JS SDK它自動更新訪問令牌還是我需要以某種方式調用它? – Augus 2013-02-13 10:39:50

相關問題