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