web-dev-qa-db-fra.com

pourquoi est-ce que je reçois "Appsecret_proof invalide fourni dans l'argument de l'API"

Depuis le dernier changement sur Facebook concernant les appsecret_proof: https://developers.facebook.com/docs/reference/api/securing-graph-api/ , nous ne pouvons toujours pas télécharger les rapports de performance, même après l'activation/désactiver les fonctionnalités des paramètres avancés dans notre application, ou appliquer le code comme décrit dans leur document.

Nous obtenons constamment cette erreur:

{"error": {"message": "appsecret_proof incorrect fourni dans l'argument de l'API", "type": "GraphMethodException", "code": 100}}

et j'ai ouvert un bug confidentiel mais personne ne me répond avec une réponse.

Je ne sais vraiment pas quoi de plus pourrions-nous essayer? 

37
user1508682

L'erreur est (certainement basée sur mon expérience) presque certainement correcte; cela signifie que vous prouvez un appsecret_proof invalide avec votre appel d'API

En supposant que vous utilisiez le SDK PHP standard sans modifications, les raisons les plus probables sont:

  • Vous avez configuré le mauvais identifiant d'application dans le code du SDK
  • Vous avez configuré le secret d'application incorrect dans le code du SDK.
  • Vous essayez d'utiliser un jeton d'accès provenant de la mauvaise application ou d'une autre application.
42
Igy

Une autre cause potentielle de l'erreur "Invalid appsecret_proof ..." est un jeton d'accès utilisateur qui n'est pas associé à une application. Si vous générez un jeton d'accès utilisateur à l'aide de l'explorateur de graphes, veillez à sélectionner une application dans le menu déroulant situé dans le coin supérieur droit. Sinon, vous allez générer des jetons qui ne fonctionnent que dans l'explorateur d'API graphique.

J'ai déposé un bogue avec le SDK Python avant que je ne prenne mon erreur. Les interfaces graphiques sont le diable.

17
Dan Ross

Il y a un bug dans le SDK de Facebook. Après 20 heures d’essais pour essayer de déboguer mon propre code (ce qui n’a pas posé de problème!), J’ai commenté ceci dans base_facebook.php:

/* Commented out by SJ 
    if (isset($params['access_token'])) {
      $params['appsecret_proof'] = $this->getAppSecretProof($params['access_token']);
    }
*/

Et tous les problèmes sont partis!

10
MrMoxy

Aucun bug dans la dernière version du SDK facebook PHP . Vous devez créer appsecret_proof conformément à la documentation:

$appsecret_proof= hash_hmac('sha256', $access_token, $app_secret);

puis transmettez-le en tant que paramètre à votre appel à l’API.

Voir les documents ici: https://developers.facebook.com/docs/graph-api/securing-requests/

Une fois que j'ai fait cela, tout était bon et je n'ai pas eu à pirater base_facebook.php

9
user3077584

Cette erreur est due au jeton correct. C'est peut-être parce que vous utilisez un compte différent pour configurer l'application Web et l'application mobile pour la configuration de Facebook. Les deux comptes devraient être identiques.

L'ID de l'application doit être identique pour votre application mobile et votre application Web.

2
Vineeth Joseph

Cette erreur résulte de la définition d'un jeton d'accès incorrect. Par exemple, publier dans un album de pages en utilisant le jeton d'accès d'un utilisateur (administrateur). J'ai presque toujours résolu cette erreur en définissant le jeton d'accès approprié

1
vinayhudli

Si cette erreur est un comportement inattendu, vous avez peut-être coché un paramètre de votre application pour l'exiger. Décochez-la et vous devriez cesser de recevoir cette erreur. Ce paramètre se trouve dans Paramètres -> Avancé et s’appelle "App Secret Proof pour les appels de l’API du serveur". Définissez cela sur NO.

À partir de maintenant, ce paramètre figure sur cette page (assurez-vous de mettre votre ID d'application dans l'URL): https://developers.facebook.com/apps/YOUR-APP-ID/settings/advanced/

Notez que ce n’est pas une solution universelle, mais uniquement pour les personnes qui ne souhaitent pas ce comportement.

1
user288926

Dans mon cas, je devais définir le jeton d'accès par défaut via la méthode: setDefaultAccessToken()

J'ai utilisé un jeton généré dans l'outil de développement GraphApi mais je ne suis pas passé à l'application appropriée. Il a été résolu en changeant l'application en une seule et en utilisant un jeton régénéré.

0
Zank

assurez-vous que votre paramètre est correct fbappid + fbappsecret

cette erreur se produit lorsque ceux-ci ne sont pas réglés correctement

comme vous avez 2 applications un développement et une production

et vous bousiller les codes, vérifiez ces deux

0
Prozi

Juste pour les personnes ayant le même problème; 

Lorsque vous définissez Client OAuth Login sur "oui" sur facebook, vous devez indiquer/ les URI de redirection OAuth valides . Sinon, facebook lance exactement la même erreur. 

0
Süha Boncukçu

 enter image description here Peut-être que quelque chose ne va pas avec votre jeton d'accès, vous avez besoin du style Gestionnaire de projet. Vous pouvez obtenir le jeton à partir du contenu de https://business.facebook.com/settings/system-users/ {sys_user_id}? business_id = {bussiness_id} avec regex r'"accessToken":"([\d|\w]+)","context"'

0
Xun Lee

Je sais que c’est une vieille question, mais j’ai résolu la mienne en changeant l’Application pour qu’elle devienne l’application appropriée avec laquelle je devrais générer un jeton d’accès. Par exemple. de Project1 à Project2.

0
jDmendiola