为什么我会收到"API参数中提供的appsecret_proof无效"

use*_*682 42 facebook facebook-graph-api app-secret

自Facebook上的最新变化以来,关于appsecret_proof:https://developers.facebook.com/docs/reference/api/securing-graph-api/,即使在启用/禁用Advanced功能后,我们仍然无法下载性能报告我们的应用程序中的设置,或应用其文档中描述的代码.

我们经常收到此错误:

{"error":{"message":"API参数中提供的appsecret_proof无效","类型":"GraphMethodException","code":100}}

我打开了一个保密的错误,但没有人回答我的回答.

我真的不知道我们还能尝试什么?

Igy*_*Igy 47

错误是(根据我的经验)几乎肯定是正确的; 这意味着您通过API调用证明appsecret_proof无效

假设你没有修改就使用标准的PHP SDK,最可能的原因是:

  • 您在SDK代码中配置了错误的应用ID
  • 您在SDK代码中配置了错误的应用程序密钥
  • 您正在尝试使用来自错误/其他应用的访问令牌


Dan*_*oss 18

"无效的appsecret_proof ..."错误的另一个潜在原因是与应用程序无关的用户访问令牌.如果您使用图表资源管理器生成用户访问令牌,请务必从右上角的下拉列表中选择一个应用程序.否则,您将生成仅在图形API资源管理器中工作的令牌.

提交了错误使用Python SDK之前,我发现我错了.图形用户界面是魔鬼.


MrM*_*oxy 10

Facebook SDK中存在一个错误.经过20个小时尝试一切来调试我自己的代码(没有问题!),我在base_facebook.php中对此进行了评论:

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

所有的问题都消失了!

  • 对于生成令牌的代码部分以及使用它时,您可能正在使用不同的应用程序ID. (8认同)
  • @Mike这是我的问题.谢谢 (2认同)
  • 请注意,如果您使用的是Facebook页面访问令牌,则应该通过页面访问令牌作为参数生成一个新会话.这应该是你的函数的返回:return new FacebookSession($ access_token); (2认同)

小智 9

最新版本的facebook PHP SDK中没有错误.您需要根据文档创建appsecret_proof:

$appsecret_proof= hash_hmac('sha256', $access_token, $app_secret);
Run Code Online (Sandbox Code Playgroud)

然后将其作为参数传递给您的api调用.

请参阅此处的文档:https://developers.facebook.com/docs/graph-api/securing-requests/

一旦我这样做了一切都很好,我不必破解base_facebook.php

  • 散列已经在第919行的base_facebook.php中完成了为什么要再次进行? (2认同)