在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()->
我被困在这里几天><希望有人能提供帮助。非常感谢!
答案 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/