これはおそらく問題の半分を解決するだけですが、$ _REQUEST ['signed_request']は$ _REQUEST( 'signed_request')ではないことを覚えておいてください。
EDIT:あなたが述べたように最後の部分を無視し、ここにあなたの答えは次のとおりです。
あなただけの変数ではないあなたが望むものを得ています。署名付きリクエストを返すので、秘密キーを使用してリクエストを復号化する必要があります。 HERESにどのように:
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');
return null;
}
// check sig
$expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true);
if ($sig !== $expected_sig) {
error_log('Bad Signed JSON signature!');
return null;
}
return $data;
}
function base64_url_decode($input) {
return base64_decode(strtr($input, '-_', '+/'));
}
は、署名された要求とそれにアプリの秘密をパスし、それがあなたの配列を返します。私はFacebook SDKを使ってそれを行う方法があると確信していますが、私はそれを使用しないのでわかりません。
詳細:https://developers.facebook.com/docs/authentication/signed_request/
グッドラック!
この問題を解決できましたか?そうであれば?ソリューションを共有してください。 –