2012-02-15 84 views
2

我知道,即使從Facebook獲得的offline_access令牌也可能無效(例如,如果用戶更改了密碼)。在這種情況下,我需要捕獲拋出的異常,並提供我的網站用戶再次授權。Facebook OAuthException當offline_access令牌無效

那麼這種情況下拋出的確切錯誤代碼/消息是什麼?我知道這是一個OAuthException,但無法獲得代碼。不能只使用該類型,因爲還有很多其他OAuthException-s。

我的計劃是:改變base_facebook.php和添加的情況下手柄-ING代碼在這裏:

protected function throwAPIException($result) { 
    $e = new FacebookApiException($result); 
    switch ($e->getType()) { 
     // OAuth 2.0 Draft 00 style 
     case 'OAuthException': 
     // OAuth 2.0 Draft 10 style 
     /* 
     * Need to add an appropriate case here. 
     */ 

     case 'invalid_token': 
     $message = $e->getMessage(); 
     if ((strpos($message, 'Error validating access token') !== false) || 
      (strpos($message, 'Invalid OAuth access token') !== false)) { 
     $this->setAccessToken(null); 
     $this->user = 0; 
     $this->clearAllPersistentData(); 
     } 
    } 

    throw $e; 
    } 

回答

0

在如果有人需要它,我會以某種方式找到答案。這些OAuthException的例外是190。可以從拋出的異常中得到這樣的結果:

$ e-> getCode();

0

而是改變SDK的,寫在它的包裝像

+0

對不起,但這不是我的問題的答案。當然,我打算在try-catch塊中包裝每個API調用!問題是捕獲那些認證問題的確切例外是什麼...... – ArVan 2012-05-28 21:26:52

相關問題