我们正在使用PHP API和回调在我们的应用上添加一个购买按钮。
在签名的请求中,我有买家和接收者。在其他$ _REQUEST变量中,我得到了user_id。
当从某些帐户调用时,这三个都是相同的值,并且这三个都是我们正在使用的帐户的Facebook用户ID。这完全符合预期。
然而,有时候,买方和接收方与user_id不同。在这种情况下,user_id是facebook帐户的预期值,但买家和收件人对我们(或我们的应用程序)无法识别。
我们正处于进一步隔离的过程中 - 不知道这是特定于帐户,特定于会话还是其他内容。
编辑添加买家和收件人似乎是特定于会话的。
无论如何,我们真的想知道这三个领域的含义是什么,以及为什么它们有时相同或有时不同。如果你能告诉我们,或者给我们一些文件,那就太棒了。
金
答案 0 :(得分:0)
目前,Facebook Credits signed_request将用户ID作为整数而不是字符串发送。 https://github.com/facebook/php-sdk/issues/221#issuecomment-503727
这对我有用: ...
//$data = json_decode(base64_url_decode($payload), true);
$data = json_decode( json_parse_num_to_str( base64_url_decode($payload) ), true);
...
/**
* @Mic_oss - Fast Solution
* json parse numeric value to string value
* @param JSON encoded string
* @return JSON encoded string w/ numeric values as string values
*/
function json_parse_num_to_str($strJson)
{
if( !is_null($strJson) && !empty($strJson) )
{
$aJson = array();
$aJson = explode('":',$strJson);
foreach( $aJson as $sKeyJson => $sValueJson )
{
$aValueJson = array();
$aValueJson = explode(',"',$aJson[$sKeyJson]);
foreach( $aValueJson as $key => $value )
{
if( is_numeric($value) )
{
$aValueJson[$key]='"'.$value.'"';
}
}
$aJson[$sKeyJson] = implode(',"',$aValueJson);
}
$strJson = implode('":',$aJson);
}
return $strJson;
}