$ _REQUEST ['signed_request']中没有auth_token,userId

时间:2013-04-12 15:50:18

标签: php facebook

为什么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字段在哪里?

2 个答案:

答案 0 :(得分:0)

您必须先解码已签名的请求。请查看文档here

或试试这个:

//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和Token可以通过这种方式获得:

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

这是我使用的,不是最全面的超级全球,但嘿,我是PHP的新手。

答案 1 :(得分:0)

您获得的字段是默认字段。签名请求仅在用户登录您的应用程序或之前已授权您的应用程序时包含字段user_idoauth_token。 有关 signed_request 中可用字段的详细信息,请查看documentation