2

我们正在使用 PHP API 和回调在我们的应用程序上放置一个购买按钮。

在签名的请求中,我有一个买家和一个接收者。在其他 $_REQUEST 变量中,我得到了 user_id。

当从某些帐户调用时,这三个都是相同的值,并且所有三个都是我们正在使用的帐户的 facebook 用户 ID。这完全符合预期。

但是,有时买家和接收者与 user_id 不同。在这种情况下,user_id 是 facebook 帐户的预期值,但买家和接收者不是我们(或我们的应用程序)识别的帐户。

我们正在进一步隔离——还不知道这是特定于帐户、特定于会话还是其他什么。

编辑以添加买方和接收者似乎是特定于会话的。

无论如何,我们真的很想知道这三个字段的含义是什么,以及为什么它们有时相同或有时不同。如果您能告诉我们,或向我们指出一些文档,那就太好了。

4

1 回答 1

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;
}
于 2011-10-16T01:13:58.840 回答