2011-10-10 48 views
2

我們正在使用PHP API和回調在我們的應用上設置購買按鈕。Facebook積分簽名請求:買家,接收者和user_id有何區別

在簽名的請求中,我有買方和接收方。在其他$ _REQUEST變量中,我得到了user_id。

從某些帳戶中調用時,這三者都是相同的值,並且這三者都是我們正在使用的帳戶的Facebook用戶標識。這完全如預期。

但是,有時,買方和接收方與user_id不同。在這種情況下,user_id是facebook帳戶的預期值,但買方和接收方不會爲我們(或我們的應用)認可的帳戶。

我們正在進一步分離 - 不知道這是賬戶特定的,會話特定的還是其他的。

編輯添加買方和接收方似乎是會話特定的。

無論如何,我們真的很想知道這三個字段的含義,以及它們爲什麼有時相同或有時是不同的。如果你能告訴我們,或者在某些文件中指出我們,這將會很棒。

回答

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; 
} 
相關問題