3

我們一直在研究一個約2個月的應用程序,並且一切都進行得很完美。 我們在使用PHP SDK和離線模式登錄權限 但是自從前幾天在Facebook api最近發生變化並移除離線模式之後,我們開始面臨「未捕獲OAuthException:必須使用活動訪問令牌來查詢當前用戶「。訪問令牌是有效的,但我們得到OAuthException:一個活動訪問令牌錯誤

主要的問題是,它確實發生在我們的應用程序(約10分鐘)工作一段時間,但在我們通過this link 檢查令牌的有效性的同時,我們看到該令牌在另一方面,餅乾確實還存在,它不會過期,但我們得到這個錯誤: 「未捕獲OAuthException:活動的訪問令牌必須用於查詢當前用戶的信息」

I've already visited this link ,我下載了最新的版本,但它沒有幫助任何人都可以幫助我們請哪裏可能出錯?


感謝答覆,我想同雪蓮果 似乎訪問facebook-時,有一個bug> API(/ ME)在我們正在處理 用JavaScript應用程序的某些部分這是一個真正的時刻頭痛一起使用JavaScript SDK 和PHP SDK相互

+0

由我覺得我應該提到的是,當我們在瀏覽器中刪除我們的網站的Cookie,我們可以再次成功登錄,但一段時間同樣的事情發生 – Siavosh

+0

如果您使用的PHP SDK,則該使用在會議結束後的方式存儲令牌 - 您的會話過期是什麼? –

+0

我有這個相同的問題。所以,遵循這個線程,對建議的解決方案非常感興趣。 – FidoBoy

回答

1

我處理這種情況以這種方式
1.I獲得1小時的有效性訪問令牌
2.extend令牌至60天有效期
把這個標記保存到sessi並將其用於所有項目查詢。

  try{ 
       $facebook_uid = $facebook->getUser(); 
       $facebook->setExtendedAccessToken(); 
       $accessToken = $facebook->getAccessToken(); 
       $fbuser = $facebook->api('/me'); 
       $session['api_me'] = $fbuser; 
       $session['tokenValue'] = $accessToken; 
     }catch (Exception $e) { 
       facebook_uid =null; 
     } 
+0

什麼是$ fbuser?它沒有在你的代碼中定義... – FidoBoy

+1

$ fbuser = $ facebook-> api('/ me');它包含用戶信息。 – Hemc

+0

好的,謝謝!我正在嘗試你的代碼...我希望它有助於PHP SDK的新變化 – FidoBoy

0

我覺得在api中有一個bug。當我使用$ facebook-> api('/'。facebook_uid)而不是 - > api('/ me')時,它可以工作。

+1

我覺得和yacon一樣,看起來在訪問facebook-> api(/ me)時出現了一個bug,此時我們正在使用javascript處理應用程序的某些部分,這使得使用javascript sdk和PhP sdk與其他應用程序 – Siavosh

2

就可以解決這個簡單的accessToken存儲會話變量getLoginUrl後

$ facebook-> getLoginUrl(...)

那麼每當你初始化的Facebook

 
$facebook = new Facebook(array(
    'appId' => Yii::app()->params['facebook_appId'], 
    'secret' => Yii::app()->params['facebook_appSecret'], 
)); 

從會話中獲取accesstoken並使用setAccessToken設置它

$ facebook-> setAccessToken(Yii :: app() - > session ['access_token']);