Jquery Can';无法在PHP中从facebook signedRequest获取用户id。

Jquery Can';无法在PHP中从facebook signedRequest获取用户id。,jquery,facebook-javascript-sdk,facebook-php-sdk,Jquery,Facebook Javascript Sdk,Facebook Php Sdk,在我的索引页面上,我初始化javascript sdk,并完成登录/授权流程。然后,我使用AJAX将已签名的请求传递到要解析的php页面。解析签名请求的代码直接从文档中复制,我没有做任何更改。在代码的末尾,我尝试获取与已签名请求在同一对象中返回的用户信息,但是当我尝试在AJAX成功回调中记录任何这些变量时,它们会出现“未定义” //HTML function onCheckLoginStatus (response) { if (response.status != "con

在我的索引页面上,我初始化javascript sdk,并完成登录/授权流程。然后,我使用AJAX将已签名的请求传递到要解析的php页面。解析签名请求的代码直接从文档中复制,我没有做任何更改。在代码的末尾,我尝试获取与已签名请求在同一对象中返回的用户信息,但是当我尝试在AJAX成功回调中记录任何这些变量时,它们会出现“未定义”

//HTML

function onCheckLoginStatus (response)
    {
     if (response.status != "connected")
     {
      //redirect to login page;
     }
     else
     {

     //CONNECTED, Get signed request from response object and pass it to PHP page via AJAX

      $.ajax({
        url : "http://XXXXXXX/bn/signedRequest.php",
        type : 'POST',
        data: {signed_request: response.authResponse.signedRequest},
        success : function (result) {

           console.log("success"); 

           //THIS IS COMING UP UNDEFINED 

                console.log(result.uID);
        },
        error : function () {
           alert("error");
        }
    });

//PHP    
<?php

define('FACEBOOK_APP_ID', '27XXXXXX0&'); // Place your App Id here
define('FACEBOOK_SECRET', '8ea907XXXXXXX9e958'); // Place your App Secret Here

//GET THE SIGNED REQUEST

$signed_request = $_REQUEST['signed_request']; 



function parse_signed_request($signed_request, $secret) 
{
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
// decode the data
$sig = base64_url_decode($encoded_sig);
$data = json_decode(base64_url_decode($payload), true);
if (strtoupper($data['algorithm']) !== 'HMAC-SHA256')
{
error_log('Unknown algorithm. Expected HMAC-SHA256');
return null;
}


// check sig
$expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true);
if ($sig !== $expected_sig) 
{
error_log('Bad Signed JSON signature!');
return null;
}
return $data;
}
function base64_url_decode($input) 
{
return base64_decode(strtr($input, '-_', '+/'));
}

if ($_REQUEST) 
{
$response = parse_signed_request($_REQUEST['signed_request'],
FACEBOOK_SECRET);
}


$uID = $response["user_id"];
$name = $response["registration"]["name"]; 
$city = $response["registration"]["location"]["name"];

echo json_encode($uID);



?>
//HTML
函数onCheckLoginStatus(响应)
{
如果(response.status!=“已连接”)
{
//重定向到登录页面;
}
其他的
{
//连接后,从响应对象获取签名请求,并通过AJAX将其传递到PHP页面
$.ajax({
url:“http://XXXXXXX/bn/signedRequest.php",
键入:“POST”,
数据:{signed_请求:response.authResponse.signedRequest},
成功:功能(结果){
控制台日志(“成功”);
//这是未定义的
console.log(result.uID);
},
错误:函数(){
警报(“错误”);
}
});
//PHP

发送整个
$response

将回音线更改为

echo($uID);
并将AJAX调用中的console.log行更改为

console.log(result);
您只需记录结果即可自行验证

 $.ajax({
        url : "http://XXXXXXX/bn/signedRequest.php",
        type : 'POST',
        data: {signed_request: response.authResponse.signedRequest},
        success : function (result) {

           console.log("success"); 

           //THIS IS COMING UP UNDEFINED 

           console.log(result); // <----- Check whether result is undefined
        },
        error : function () {
           alert("error");
        }
    });
$.ajax({
url:“http://XXXXXXX/bn/signedRequest.php",
键入:“POST”,
数据:{signed_请求:response.authResponse.signedRequest},
成功:功能(结果){
控制台日志(“成功”);
//这是未定义的
控制台日志(结果)//