Facebook: “Ce code d'autorisation a été utilisé.”,“type”:“OAuthException”,“code”:100
Je viens de mettre à PHP 5.4.19 et facebook-php-sdk-v4.
Est-ce juste moi ou a FB fait de l'intégration délibérément difficile?! Par exemple, je n'utilise pas de Compositeur (ne peut pas l'installer sur mon ordinateur hôte partagé), afin que le chargement de la nouvelles classes requis spécifique (découvrir-pour-vous-même) de la commande - qui a été assez mal de tête! La solution proposée à http://metah.ch/blog/2014/05/facebook-sdk-4-0-0-for-php-a-working-sample-to-get-started/ n'était pas tout à fait correct.
De toute façon, quand j'ai enfin réussi à exécuter et activé "le Secret de l'App de Preuve pour le Serveur d'appels d'API" en vertu de la
App onglet paramètres avancés comme recommandé par Facebook je suis entré dans un catch 22.
Ce que c'est:
1) Pour faire un FB appel d'API à partir de mon serveur, par exemple $request = new FacebookRequest($session, 'GET', '/me');
je doit maintenant fournir une appsecret_proof argument.
2) Pour créer un appsecret_proof j'ai besoin d'un access_token c'est à dire $appsecret_proof= hash_hmac('sha256', $access_token, $app_secret);
.
3) Pour obtenir une access_token avec seulement $_GET['code'] à ce stade, je dois faire le code en bourse via
GET https://graph.facebook.com/oauth/access_token?
.
client_id={app-id}
&redirect_uri={redirect-uri}
&client_secret={app-secret}
&code={code-parameter}
4) À l'appel de FB pour le code d'échange, je reçois le message d'erreur {"error":{"message":"This authorization code has been used.","type":"OAuthException","code":100}}
.
Deux questions se posent donc:
1) Comment puis-je obtenir un access_token sauf via le code d'échange, afin que je puisse utiliser ce jeton pour créer un appsecret_proof et à son tour appel FacebookRequest?
2) Où/Comment puis-je mettre que appsecret_proof en FacebookRequest? C'est peut-être de cette façon $request = new FacebookRequest($session, 'GET', '/me', array("appsecret_proof" => $appsecret_proof));
? Je n'arrive pas à trouver les instructions spécifiques sur la façon d'utiliser appsecret_proof avec PHP API (il est clair comment le faire via http avec l'API Graphique).
OriginalL'auteur EdNdee | 2014-06-04
Vous devez vous connecter pour publier un commentaire.
Mesdames et Messieurs, j'ai décidé de tout - j'ai juste besoin d'utiliser
$access_token = $session->getToken();
. Cela m'a aidé à nier l'appel pour le code d'échange qui a été la cause OAuthException parce que Facebook a changé leur politique sur l'échange de code ayant été utilisé plus d'une fois.Maintenant "le Secret de l'App de Preuve pour le Serveur d'appels d'API" est bien activée dans l'Application onglet paramètres avancés, comme recommandé par Facebook.
Donc la solution spécifique au complet:
OriginalL'auteur EdNdee