Php $u请求[';已签名的';]中没有身份验证令牌和用户ID

Php $u请求[';已签名的';]中没有身份验证令牌和用户ID,php,facebook,Php,Facebook,为什么facebook会返回没有userId和oauth_令牌字段的签名请求($_Request['Signed_Request'])? 当我解码签名请求时,我得到的是: Array ( [algorithm] => HMAC-SHA256 [issued_at] => 1365781115 [user] => Array ( [country] =>

为什么facebook会返回没有userId和oauth_令牌字段的签名请求($_Request['Signed_Request'])? 当我解码签名请求时,我得到的是:

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

用户id和oauth令牌字段在哪里?

您必须首先解码已签名的请求。请看一下文档

或者试试这个:

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

您得到的字段是默认字段。只有当用户已登录到您的应用程序或之前已授权您的应用程序时,签名请求才会包含
user\u id
字段和
oauth\u令牌

有关签名请求中可用字段的详细信息,请查看