Comment prolonger la validité du jeton d'accès malgré la dépréciation de l'accès hors ligne
Problème :
La dépréciation de Facebook l'autorisation offline_access a entravé notre capacité à acquérir des jetons d'accès de longue durée. Malgré la documentation indiquant que les jetons OAuth côté serveur resteraient durables, ce n'est pas le cas.
Réponse :
Modifier (14 août 2012) ):
Le SDK PHP officiel de Facebook a été mis à jour, introduisant le setExtendedAccessToken révisé fonction. Pour atténuer les problèmes potentiels de duplication de session, cela nécessite de mettre fin à la session en cours lors de l'exécution de la fonction. De plus, il stocke le nouveau jeton d'accès en interne, permettant sa récupération via la fonction publique getAccessToken. Acquérir le dernier SDK sur la page Facebook PHP SDK GitHub.
Réponse originale :
Une nouvelle fonction publique a été ajoutée à base_facebook.php qui accorde l'accès à un 60 Jeton d'accès renouvelable d'une journée. La mise en œuvre de cette fonction après la réception normale du jeton d'accès peut suffire. De plus, l'activation de "deprecate offline_access" dans les paramètres avancés de l'application Developer est considérée comme nécessaire.
Insérez le code suivant dans votre base_facebook.php dans la classe Facebook et invoquez la fonction :
public function getExtendedAccessToken(){ try { // need to circumvent json_decode by calling _oauthRequest // directly, since response isn't JSON format. $access_token_response = $this->_oauthRequest( $this->getUrl('graph', '/oauth/access_token'), array( 'client_id' => $this->getAppId(), 'client_secret' => $this->getAppSecret(), 'grant_type'=>'fb_exchange_token', 'fb_exchange_token'=>$this->getAccessToken() ) ); } catch (FacebookApiException $e) { // most likely that user very recently revoked authorization. // In any event, we don't have an access token, so say so. return false; } if (empty($access_token_response)) { return false; } $response_params = array(); parse_str($access_token_response, $response_params); if (!isset($response_params['access_token'])) { return false; } return $response_params['access_token']; }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!