2011-10-10 5 views
2

PHP APIとコールバックを使用して購入ボタンをアプリに配置しています。Facebookのクレジットサインされたリクエスト:バイヤー、レシーバ、およびuser_idの違い

署名入りのリクエストでは、私はバイヤーとレシーバーを持っています。他の$ _REQUEST変数では、私はuser_idを取得します。

一部のアカウントから呼び出された場合、これらの3つはすべて同じ値であり、3つはすべて、使用しているアカウントのFacebookユーザーIDです。これはまさに期待通りです。

ただし、購入者と受信者がuser_idと異なる場合があります。この場合、user_idはFacebookアカウントの期待値ですが、購入者と受取人は私たち(または私たちのアプリ)が認識しないアカウントではありません。

私たちはさらに孤立しています。これは、アカウント固有のものか、セッション固有のものか、それ以外のものかはまだ分かりません。

編集して、購入者と受信者がセッション固有のように見えることを追加しました。

いずれにしても、これらの3つのフィールドの意味が何で、なぜ同じか、時には異なるのかが分かります。もしあなたが私たちに言いたいことや、いくつかの文書で私たちを指摘することができれば、それは素晴らしいことです。キム

答えて

0

は現在、Facebookは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; 
} 
関連する問題