Facebook Graph API:appsecret_proof 和 PHP SDK v.3.2.3 的问题

Facebook Graph API: issue with appsecret_proof and PHP SDK v.3.2.3

我有一个奇怪的问题,从昨天(2015 年 7 月 20 日)开始出现。自 2014 年 8 月以来,我的脚本运行良好,将近一年,但现在它拒绝运行。如果我将图片或文本发布到 Facebook,我会收到以下服务器错误消息:

PHP Fatal error: Uncaught GraphMethodException: Invalid
appsecret_proof provided in the API argument\
thrown in
.../base_facebook.php on line 1329

这是 Facebook PHP SDK (v.3.2.3) 中函数 throwAPIException 中的一行。我知道,它与 Require App Secret 选项有关(在 Facebook Devs -> Apps -> Settings -> Advanced 中)。此选项已停用一年,所以也许我必须在我的脚本中添加一些新内容?

在这个 stackoverflow-post 中,我发现了在调用时添加这一行的提示:

1
FacebookSession::enableAppSecretProof(false);

...但这与较新的 SDK v.4 相关,与 v.3 无关。在我的脚本中,我使用以下命令调用 SDK v.3:

1
2
$facebook = new Facebook(array( 'appId' => $App_ID, 'secret' => $App_Secret, 'cookie' => true ));
$facebook->setAccessToken($Access_Token);

有没有办法在任何地方添加 enableAppSecretProof?谢谢你帮助我! :-)


解决方案:在base_facebook.php的第918行你必须注释这三行

1
2
3
# if (isset($params['access_token']) && !isset($params['appsecret_proof'])) {
# $params['appsecret_proof'] = $this->getAppSecretProof($params['access_token']);
# }

就是这样。