Maison > développement back-end > tutoriel php > Comment obtenir des jetons d'accès Facebook de longue durée après la dépréciation de Offline_access ?

Comment obtenir des jetons d'accès Facebook de longue durée après la dépréciation de Offline_access ?

Linda Hamilton
Libérer: 2024-11-29 07:02:14
original
506 Les gens l'ont consulté

How to Obtain Long-Lived Facebook Access Tokens After Offline_access Deprecation?

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'];
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal