我有使用Facebook的PHP的sdk問題。當打印配置我的php.ini運行Facebook的PHP sdk
$ facebook-> getSignedRequest() 打印不顯示任何頁面「或 '用戶' 的值。
我也tryed打印$ _REQUEST [ 'signed_request']和我得到的是
注意:未定義指數:signed_request
莫非在我的php.ini文件中,我錯過了一些設置?
感謝您的幫助!
我有使用Facebook的PHP的sdk問題。當打印配置我的php.ini運行Facebook的PHP sdk
$ facebook-> getSignedRequest() 打印不顯示任何頁面「或 '用戶' 的值。
我也tryed打印$ _REQUEST [ 'signed_request']和我得到的是
注意:未定義指數:signed_request
莫非在我的php.ini文件中,我錯過了一些設置?
感謝您的幫助!
這隻會解決一半的問題,但請記住$ _REQUEST ['signed_request']不是$ _REQUEST('signed_request');
編輯:忽略的最後一部分,正如你所說,這裏是你的答案:
你得到的變量只是不是你想要的人。它正在返回一個已簽名的請求,並且您需要使用您的私鑰解密請求。繼承人如何:
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/
古德勒克!
當然,在寫這篇文章時,這是一種錯字錯誤。我使用$ _REQUEST ['signed_request']。 – 2012-02-28 10:47:56
你能提供更多的代碼嗎?所以我們可以確定問題。我不能想到會導致這個問題的php.ini的問題。 – MichaelH 2012-02-28 10:49:41
require('php-sdk/facebook.php'); //創建我們的應用程序實例(將其替換爲您的appId和祕密)。 $ = Facebook的新的Facebook(陣列( 'APPID'=> 'myAppId', '祕密'=> 'mySecret', '的Cookie'=>真, )); $ signed_request = $ facebook-> getSignedRequest(); 當打印$簽名的請求我得到的是以下內容: 陣列([算法] => HMAC-SHA256 [代碼] => 2.AQBw-BIdk15ur3XD.3600.1330430400.5-634829875 | X8Oq1fMWhdW2hZunCRSIYIqf8Ms [issued_at] => 1330423787 [user_id] => myUserId) – 2012-02-28 11:55:41
你是否設法解決這個問題?如是?你能分享你的解決方案嗎? – 2012-10-25 12:29:18