当我使用GET请求调用我的fb-app时,例如“?app_data = 1”,该变量位于已签名的请求中。好的,到目前为止。但是,当我点击我的fb-app中的另一个链接时,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'];
}
答案 0 :(得分: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;