2011-12-06 102 views
0

當我使用GET請求調用我的fb-app時,如「?app_data = 1」,變量位於已簽名的請求中。好的,到目前爲止。但是,當我點擊我的fb應用程序中的另一個鏈接時,app_data仍然在簽名的請求中。我的應用程序重新啓動它,但我不需要它。從簽署的請求中刪除app_data

如何刪除簽名請求中的app_data?有沒有人提出這個問題的建議?

我使用PHP和JS SDK。

$aSignedRequest = $_REQUEST['signed_request']; 
if(isset($aSignedRequest)) 
{ 
    $sSignedRequest = $aSignedRequest['signed_request']; 
    list($sEncodedSig, $sPayload) = explode('.', $sSignedRequest, 2); 

    // decode the data 
    $aData = json_decode(base64_decode(strtr($sPayload, '-_', '+/')), true); 
    $iContestId = $aData['app_data']; 
} 

回答

1

下面是解:

unset($aData['app_data']); 
$sData = json_encode($aData); 
$sPayload = base64_encode($sData); 
$sEncodedSig = hash_hmac('sha256', $sPayload, '<<fb app-secret>>', $raw = true); 
$sSignedRequest = base64_encode($sEncodedSig).'.'.$sPayload; 
$_REQUEST['signed_request'] = $sSignedRequest;