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

您必须首先解码签名的请求。看看这里的文档

或者试试这个:

//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 的新手。

于 2013-04-12T18:29:50.117 回答
0

您获得的字段是默认字段。签名请求包含该字段user_id,并且oauth_token仅当用户已登录您的应用程序或之前已授权您的应用程序时。
有关signed_request中可用字段的详细信息,请查看文档

于 2013-04-15T11:53:48.190 回答