2011-12-29 14 views
4

Facebook Connectを使用しています。登録者の50%以上が「悪い署名JSON署名」を取得しています。エラー。この問題の原因とその解決方法は何ですか?ここでFacebook Connect:断続的:Bad Signed JSON署名

はコードです:

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; 
} 

ありがとうございました!

+0

この[リンク](http://www.violato.net/blog/php/71-uncaught-curlexception-60-ssl-certificate-problem-verify-that-the-ca- –

答えて

0

あなたが知っている良いアカウントで行っている登録の50%...または野生のウェブサイトの登録の50%ですか?それが野生の場合、私はそれがハッキングの試行に失敗したと見なします...あなたの安全なサイトとして余分な$sig !== $expected_sigチェックを持っていないサイトを見つけようとしています。 :)

+0

その50%は野生ですが、私がテストすると、時にはこのエラーが発生し、ときどきそうではありません。サイトをハッキングしていない既知の個人によっても報告されています。 –

+0

確認してください。署名されたリクエストが得られない状況がありました。参照:http://facebook.stackoverflow.com/questions/7352182/page-tabs-signed-request-occometimes-not-populated – DMCS

+0

この問題に関する新しい情報はありますか? – DMCS

1

は、app_secretをapiにチェックすることで同じ問題を解決しました。私は不可視の記号/文字をコピーしました

-1

あなたのApacheサーバはCURLライブラリをサポートしていないので、これが起こったと思います。 php.iniを開き、 "; extension = php_curl.dll"を見つけて ";"を削除してください。あなたのPHP CURLのコメントが外されたことを意味します。