0

我知道在 Facebook API 的最后一次更新中,有可能提供一个appsecret_proof使用 app_secret 签名的访问令牌。

现在的问题是,不管我在我的 facebook 应用程序上设置的选项(启用\禁用:)Require AppSecret Proof for Server API calls我总是得到:

Invalid appsecret_proof provided in the API argument

我发现最后一个版本的 php-facebook-sdk 总是在参数之间插入appsecret_proof

...
if (isset($params['access_token'])) {
    $params['appsecret_proof'] = $this->getAppSecretProof($params['access_token']);
}
...
protected function getAppSecretProof($access_token) {
    return hash_hmac('sha256', $access_token, $this->getAppSecret());
}
...

如果我禁用对我的应用程序的检查,并注释插入参数的行,一切正常,否则我会收到错误消息。

现在,我哪里错了?我检查了三次$access_token$this->getAppSecret()并且文档似乎都是正确的。有什么线索吗?

4

2 回答 2

0

把你的头脑从简单到复杂的问题解决方案上工作。在这种特定情况下,我首先要做的是双重(三重)检查我的:App-IDApp-SecretAPI-Version(App Dashboard 中提供的所有 3 个)和访问令牌(Tools & Support > Graph API Explorer) .

对我来说,缺少的部分是访问令牌。确保在 Graph API Explorer 下找到右侧的下拉菜单并选择您注册的应用程序名称,而不是默认值“Graph API Explorer”。

所以毕竟你的代码应该是这样的(Graph v2.4):

$fb = new Facebook\Facebook([
  'app_id' => $app_id,
  'app_secret' => $app_secret,
  'default_graph_version' => $api_version
]);
于 2015-08-11T20:58:47.803 回答
-1

我终于能够通过授予一切权限来摆脱错误。

于 2013-09-15T16:10:44.443 回答