Facebook PHP SDK v4在服务器上返回空白页面,但在localhost中工作

时间:2014-12-18 05:52:06

标签: php server facebook-php-sdk

在localhost中一切都很完美,但在服务器上却无法正常工作。 (显示Chrome的空白页面,并在IE中显示HTTP 500内部服务器错误。我试图通过在php文件顶部添加代码来获取错误日志,但无法获取日志但是空白页面)

error_reporting(E_ALL);
ini_set("display_errors", 1); 

服务器运行PHP 5.5,启用了CURL SSL。我试图在Facebook设置中将服务器IP设置为白名单,但不能正常工作。服务器中的Facebook ID和密码是正确的。

我使用Facebook Javascript SDK获取用户访问令牌

FB.login(function(response) {
            if (response.authResponse) {
                var access_token = response.authResponse.accessToken;

然后通过AJAX传递给facebook.php进行检查并获取用户个人资料

$.ajax({
    type: "POST",
    url: "facebook.php",
    data: 'access_token='+access_token

facebook.php

require 'FB_php_sdk_v4/autoload.php';

use Facebook\FacebookSession;
use Facebook\FacebookRequest;
use Facebook\GraphUser;
use Facebook\FacebookRequestException;

FacebookSession::setDefaultApplication('app_id', 'app_secret');
$session = new FacebookSession($_POST['access_token']);

// get GraphUser info by Facebook API
try {
  $me = (new FacebookRequest(
    $session, 'GET', '/me'
  ))->execute()->getGraphObject(GraphUser::className());
  $first_name = $me->getFirstName();
  $uid = $me->getId();
} catch (FacebookRequestException $e) {
  $code = $e->getCode();
  $error_msg = $e->getMessage();
  echo $code.$error_msg;
}

我尝试了不同的场景,发现当执行FacebookRequest时,页面将变为空白。

$me = (new FacebookRequest(
        $session, 'GET', '/me'
      ))->execute()->

我被困在这里几天><希望有人能提供帮助。非常感谢!

2 个答案:

答案 0 :(得分:0)

我找到了根本原因。

错误无法显示,因为我将其隐藏在某些代码中,因此在错误隐藏代码之后显示错误显示代码后,发现错误。

error_reporting(E_ALL);
ini_set("display_errors", 1); 

错误是

Fatal error: Call to undefined function Facebook\mb_substr() in /xxx/facebook/php-sdk-v4/src/Facebook/FacebookCurlHttpClient.php on line 253

在这个solution之后,只需启用服务器中的mbstring,问题就解决了!

希望这可以帮助遇到类似问题的人。

谢谢!

答案 1 :(得分:0)

我认为它缺失了

$helper = new FacebookRedirectLoginHelper(URL_REDIRECT);

参考: https://www.webniraj.com/2014/05/01/facebook-api-php-sdk-updated-to-v4-0-0/