2012-02-15 3 views
2

Je sais que même le jeton offline_access obtenu de Facebook peut être invalide (dans le cas où l'utilisateur a changé de mot de passe par exemple). Dans ce cas, je dois attraper l'exception levée et offrir à l'utilisateur de mon site d'autoriser à nouveau.Facebook OAuthException lorsque le jeton offline_access est invalide

Alors, quel est le code d'erreur exact/message lancé dans ce cas? Je sais que c'est un OAuthException, mais n'a pas pu obtenir le code. Ne peut pas utiliser seulement le type, car il y a beaucoup d'autres OAuthException -s.

Mon plan est le suivant: changer le base_facebook.php et ajoutez le code de poignée-ing cas ici:

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; 
    } 

Répondre

0

En Si quelqu'un en a besoin, j'ai trouvé la réponse d'une façon ou d'une autre. L'exception pour ce type d'exception OAuth est 190. Peut être obtenu à partir de l'exception lancée comme ceci:

$ e-> getCode();

0

Au lieu de changer le SDK, écrire un wrapper dessus comme

+0

désolé, mais ce n'est pas la réponse à ma question. Bien sûr, j'allais emballer chaque appel API dans un bloc try-catch! La question était quelle est l'exception exacte à attraper pour ce genre de problèmes d'authentification ... – ArVan

Questions connexes