Facebook PHP SDK v4 возвращает пустую страницу на сервере, но работает на локальном хосте

На локальном хосте все работает, а на сервере не работает. (показывает пустую страницу для Chrome и показывает внутреннюю ошибку сервера HTTP 500 в IE. Я попытался получить журнал ошибок, добавив код в начало файла php, но не смог получить журнал, но пустая страница)

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

Сервер работает с PHP 5.5, с включенным CURL SSL. Я попытался установить IP-адрес сервера в белый список в настройках Facebook, но это тоже не работает. Идентификатор Facebook и секрет на сервере верны.

Я использую Facebook Javascript SDK для получения токена доступа пользователя

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

Затем перейдите к facebook.php с помощью AJAX для проверки и получения профиля пользователя.

$.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()->

Я застрял здесь на несколько дней> ‹ надеюсь, кто-то может помочь. Большое спасибо!


person aitsu    schedule 18.12.2014    source источник
comment
кто-нибудь знает, почему я не могу сделать FacebookRequest на живом сервере?   -  person aitsu    schedule 21.12.2014


Ответы (2)


Я нашел первопричину.

Ошибка не может быть показана, потому что я скрываю ее в каком-то коде, поэтому после размещения кода отображения ошибки после кода скрытия ошибки была обнаружена ошибка.

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

И следуя этому решению, просто включите mbstring на сервере, и проблема решена!

Надеюсь, это может помочь кому-то, кто столкнулся с подобной проблемой.

Спасибо!

person aitsu    schedule 22.12.2014

я думаю его не хватает

$helper = new FacebookRedirectLoginHelper(URL_REDIRECT);

Ссылка: https://www.webniraj.com/2014/05/01/facebook-api-php-sdk-updated-to-v4-0-0/

person Niko Jojo    schedule 27.12.2014