2012-02-28 41 views
0

我有使用Facebook的PHP的sdk問題。當打印配置我的php.ini運行Facebook的PHP sdk

$ facebook-> getSignedRequest() 打印不顯示任何頁面「或 '用戶' 的值。

我也tryed打印$ _REQUEST [ 'signed_request']和我得到的是

注意:未定義指數:signed_request

莫非在我的php.ini文件中,我錯過了一些設置?

感謝您的幫助!

+0

你是否設法解決這個問題?如是?你能分享你的解決方案嗎? – 2012-10-25 12:29:18

回答

0

這隻會解決一半的問題,但請記住$ _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/

古德勒克!

+0

當然,在寫這篇文章時,這是一種錯字錯誤。我使用$ _REQUEST ['signed_request']。 – 2012-02-28 10:47:56

+0

你能提供更多的代碼嗎?所以我們可以確定問題。我不能想到會導致這個問題的php.ini的問題。 – MichaelH 2012-02-28 10:49:41

+0

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