Facebook Connect:间歇性:签名错误的JSON签名。

4
我正在使用Facebook连接。超过50%的注册会出现“Bad Signed JSON signature.”错误。这个问题是什么原因引起的,如何解决?
以下是代码:
function parse_signed_request($signed_request, $secret) {
    list($encoded_sig, $payload) = explode('.', $signed_request, 2); 

    // decode the data
    $sig = base64_url_decode($encoded_sig);
    $data = json_decode(base64_url_decode($payload), true);

    if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') {
        error_log('Unknown algorithm. Expected HMAC-SHA256');
        header('location: /volunteerregistration?error=Facebook has failed to connect. Unknown algorithm. Expected HMAC-SHA256 Please register with Omprakash below. ');
        exit;
    }

    // check sig
    $expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true);
    if ($sig !== $expected_sig) {
        error_log('Bad Signed JSON signature!');
        header('location: /volunteerregistration?error=Facebook has failed to connect. Bad Signed JSON signature. Please register with Omprakash below.');
        exit;
    }

    return $data;
} 

谢谢!


你可以尝试查看这个链接:http://www.violato.net/blog/php/71-uncaught-curlexception-60-ssl-certificate-problem-verify-that-the-ca-cert-is-ok-when-implementing-facebook-connect - Robin Carlo Catacutan
3个回答

1

遇到了同样的问题,通过检查给定的 app_secret 到 api 的匹配解决了。我复制了一个不可见的符号/字符。


0
50%的注册是在使用已知好的帐户进行还是在野外网站上进行的?如果在野外,我会认为这是失败的黑客攻击尝试...试图找到没有像您的安全站点一样具有额外 $sig!== $ expected_sig 检查的网站。 :)

它在野外的使用量达到了50%,但是当我进行测试时,有时会出现这个错误,有时又不会。已知一些非黑客身份的用户也报告过类似问题。 - Michael Levy
好的,只是在检查。我曾经遇到过无法获取签名请求的情况。请参见:http://facebook.stackoverflow.com/questions/7352182/page-tabs-signed-request-occasionally-not-populated - DMCS

-1

我认为这可能是因为你的Apache服务器不支持CURL库造成的。 打开你的php.ini文件,找到 ";extension=php_curl.dll" 这一行,然后移除 ";",这意味着你的php CURL被取消了注释。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接