配置my php.ini以运行Facebook php sdk

配置my php.ini以运行Facebook php sdk,php,facebook,Php,Facebook,我在使用Facebooks php sdk时遇到问题。在打印 $facebook->getSignedRequest 打印不显示任何“页面”或“用户”值 我还尝试打印$u请求['signed_REQUEST'],我得到的只是 注意:未定义索引:已签名的\u请求 可能是我的php.ini文件中的一些设置没有完成吗 谢谢你的帮助 这只可能解决一半的问题,但请记住$\u REQUEST['signed\u REQUEST']而不是$\u REQUEST'signed\u REQUEST' 编辑:忽略您

我在使用Facebooks php sdk时遇到问题。在打印

$facebook->getSignedRequest 打印不显示任何“页面”或“用户”值

我还尝试打印$u请求['signed_REQUEST'],我得到的只是

注意:未定义索引:已签名的\u请求

可能是我的php.ini文件中的一些设置没有完成吗


谢谢你的帮助

这只可能解决一半的问题,但请记住$\u REQUEST['signed\u REQUEST']而不是$\u REQUEST'signed\u 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, '-_', '+/'));
}
将已签名的请求和你的应用程序密码传递到其中,它将返回你的数组。我确信有一种方法可以通过Facebook SDK实现,但我不确定,因为我没有使用它

更多信息:


祝你好运

当然,在这里写这篇文章是一个打字错误。我使用$_REQUEST['signed_REQUEST']。您能提供更多的代码吗?所以我们可以找出问题所在。我想不出php.ini有什么问题会导致这种情况。需要“php sdk/facebook.php”;//创建我们的应用程序实例,并将其替换为您的appId和secret$facebook=new Facebookarray'appId'=>'myAppId'、'secret'=>'mySecret'、'cookie'=>true$签名请求=$facebook->getSignedRequest;打印$signed请求时,我得到的结果如下:数组[算法]=>HMAC-SHA256[代码]=>2.AQBw-BIdk15ur3XD.3600.13304300.5-634829875 | X8Oq1fMWhdW2hZunCRSIYIqf8Ms[发布地址]=>1330423787[用户id]=>myUserId我已经尝试了您提供的代码,但问题在于$请求['signed\u请求']我在另一台主机上尝试了相同的代码,效果很好,这就是为什么我认为php.ini文件中的某些设置不正确,或者可能是我遗漏了一些其他设置?Sanela,你为什么要尝试获取$_REQUEST['signed_REQUEST']?它不是这样解析的。Facebook不解析请求参数,而是通过PHP解码的JSON解析返回的数据。。您只需使用$signed_请求并通过该函数运行它。您是否解决了此问题?如果有的话?你能分享一下你的解决方案吗?