0

facebook が userId フィールドと oauth_token フィールドなしで署名付きリクエスト ($_REQUEST['signed_request']) を返すのはなぜですか? 署名されたリクエストをデコードすると、これが私が持っているものです:

Array ( 
         [algorithm] => HMAC-SHA256
         [issued_at] => 1365781115     
         [user] => Array ( 
                           [country] => ar 
                           [locale] => es_LA 
                           [age] => Array ( [min] => 21 )
                          ) 
     )

user_id フィールドと oauth_token フィールドはどこにありますか?

4

2 に答える 2

0

取得しているフィールドはデフォルトのフィールドです。署名されたリクエストには、ユーザーがアプリケーションにログインしたか、以前にアプリケーションを承認した場合にのみuser_id、フィールドが含まれます。signed_request で利用可能なフィールドの詳細については、ドキュメントを確認してください。oauth_token

于 2013-04-15T11:53:48.190 に答える
0

最初に署名付きリクエストをデコードする必要があります。こちらのドキュメントをご覧ください

またはこれを試してください:

//save signed request for decoding
$srq = $_REQUEST['signed_request'];

function parse_signed_request($srq) {
  list($encoded_sig, $payload) = explode('.', $srq, 2); 

  // decode the data
  $sig = base64_url_decode($encoded_sig);
  $data = json_decode(base64_url_decode($payload), true);
  $GLOBALS['sdata'] = $data;//set a superglobal for later use
  return ($data);
}

function base64_url_decode($input) {
  return (base64_decode(strtr($input, '-_', '+/')));
}

//call the signer req. decode
parse_signed_request($srq);

また、情報 UID とトークンは次の方法で入手できます。

$sdata['oauth_token'];
$sdata['user_id']; 

これは私が使用しているもので、おそらくスーパーグローバルでは最もクリーンではありませんが、私はPHPの初心者です。

于 2013-04-12T18:29:50.117 に答える