我的应用程序的连续重定向问题基本上是请求基本用户信息,例如姓名,性别和位置。 在我决定打开base_facebook.php并跟踪流程之前,我经历了太多头痛。我最终评论了if块,该块检查 $ sig 是否与parseSignedRequest函数中的 $ expected_sig 匹配。该应用程序运行良好,并显示了有关我的基本信息。不过我想知道这样做是否安全?!!!为什么$ expected_sig与$ sig不匹配任何帮助将不胜感激
protected function parseSignedRequest($signed_request) {
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
// decode the data
$sig = self::base64UrlDecode($encoded_sig);
$data = json_decode(self::base64UrlDecode($payload), true);
if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') {
self::errorLog('Unknown algorithm. Expected HMAC-SHA256');
return null;
}
// check sig
$expected_sig = hash_hmac('sha256', $payload,
$this->getAppSecret(), $raw = true);
var_dump($expected_sig);
echo '<br/><br/><br/>';
var_dump($sig);
// if ($sig !== $expected_sig) {
// self::errorLog('Bad Signed JSON signature!');
// return null;
// }
return $data;
}
答案 0 :(得分:2)
我遇到了类似的问题,发现在调用
时提供正确的配置参数是我的错误$ facebook = new Facebook($ config);
答案 1 :(得分:1)
出于安全考虑,这一点至关重要。它验证请求是来自facebook,因为只有fb,你知道应用程序的秘密。
实际上,唯一可以解决这个问题的变量是facebook app secret或者对signed_request进行某种修改。我在测试时遇到了同样的问题,因为我复制了签名的错误请求。一定要仔细检查一切。