我知道在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()
和文档,看起来都是正确的。
有线索吗?
答案 0 :(得分:0)
我终于能够通过授予对所有内容的权限来摆脱错误。
答案 1 :(得分:0)
从容易解决问题的复杂解决方案开始。在这个特定情况下,我首先要做的是双重(三重)检查我: App-ID , App-Secret , API-Version (App Dashboard中提供的所有3个)和访问令牌(工具和支持> Graph API Explorer)。
对我来说,缺少的部分是访问令牌。确保在Graph API资源管理器下,找到右侧的下拉列表和选择已注册的应用程序名称,而不是默认值“Graph API Explorer”。
所以你的代码看起来应该是这样的(Graph v2.4):
$fb = new Facebook\Facebook([
'app_id' => $app_id,
'app_secret' => $app_secret,
'default_graph_version' => $api_version
]);