2011-10-10 2 views
2

PHP API 및 콜백을 사용하여 앱에 구매 버튼을 추가하는 중입니다.Facebook 크레딧 서명 된 요청 : 구매자, 수신자 및 user_id의 차이점

서명 된 요청에는 구매자와 수신자가 있습니다. 다른 $ _REQUEST 변수에서 user_id를 얻습니다.

일부 계정에서이 계정을 호출하면이 세 계정은 모두 동일한 값이며 세 계정은 모두 사용중인 계정의 Facebook 사용자 ID입니다. 이것은 정확히 예상대로입니다.

하지만 구매자와 수신자가 user_id와 다른 경우가 있습니다. 이 경우 user_id는 페이스 북 계정의 예상 값이지만 구매자와 수신자는 우리 (또는 앱)가 인식 할 수있는 계정이없는 것입니다.

우리는 추가 격리 단계에 있습니다. 계정 별, 세션 별 또는 다른 항목인지 아직 알 수 없습니다.

구매자와 수신자가 세션별로 나타나는 것으로 추가하여 편집했습니다.

어쨌든 우리는이 세 분야의 의미가 무엇인지, 왜 때로는 동일하거나 때로는 다른지를 알고 싶습니다. 당신이 우리에게 말할 수 있거나, 어떤 문서에서 우리를 지적한다면, 그것은 위대 할 것입니다. 김

답변

0

은 현재 페이스 북은 signed_request int 타입 대신 문자열로의 사용자 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; 
} 
관련 문제