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).

autant que je sache, appsecret_proof est ajouté automatiquement par le sdk php.

OriginalL'auteur EdNdee | 2014-06-04