Для моего приложения мне нужно получить основную информацию о пользователях из профилей Facebook. Я сделал файл JavaScript, который обрабатывает кнопку входа в систему, и файл PHP, который обрабатывает сбор данных. PHP-файл использует FacebookJavaScriptLoginHelper для сеанса.
Проблема, которая у меня есть, состоит в том, что сеанс Facebook равен NULL, и из-за этого эта ошибка появляется всякий раз, когда я запрашиваю данные: Исправляемая фатальная ошибка: Аргумент 1, передаваемый в Facebook \ FacebookRequest :: __ construct (), должен быть экземпляром Facebook \ FacebookSession, с указанным нулевым значением, вызываемым в \ mypath \ FacebookRequest.php. Я использую локальный сервер xammp apache на https.
Это мои файлы php и JavaScript.
<!DOCTYPE html>
<html xmlns:fb="http://ogp.me/ns/fb#">
<head>
<title>Javascript</title>
<meta charset="UTF-8">
</head>
<body>
<script>
function statusChangeCallback(response)
{
console.log('statusChangeCallback');
console.log(response);
if (response.status === 'connected')
{
// User is connected to app and facebook
}
else if (response.status === 'not_authorized')
{
// User is only logged into Facebook
}
else
{
// User has not logged in to Facebook
}
}function checkLoginState()
{
FB.getLoginStatus(function(response)
{
statusChangeCallback(response);
if (response.status === 'connected')
{
window.location="phpfile.php";
}
});
}
window.fbAsyncInit = function()
{
FB.init(
{
appId : 'My_app_ID',
cookie : true,
xfbml : true,
version : 'v2.1',
status : true
});
FB.getLoginStatus(function(response)
{
statusChangeCallback(response);
});
};
(function(d, s, id)
{
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/nl_NL/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}
(document, 'script', 'facebook-jssdk'));
</script>
<fb:login-button max_rows="3" size="xlarge" show_faces="true" auto_logout_link="true"default_audience="everyone" onlogin="checkLoginState();"></fb:login-button>
<div id="status">
</div>
</body>
</html>
<?php
require_once "/facebook-php-sdk-v4-4.0-dev/autoload.php";
use Facebook\FacebookSession;
use Facebook\FacebookRequest;
use Facebook\FacebookJavaScriptLoginHelper;
FacebookSession::setDefaultApplication('myappid', 'myappsecret');
$helper = new FacebookJavaScriptLoginHelper();
try
{
$session = $helper->getSession();
if($session === NULL)
{
echo "Session = null ";
}
}
catch(FacebookRequestException $ex)
{
// facebookerror
}
catch(\Exception $ex)
{
}
if ($session)
{
echo "session sucessfull";
}
?>
Когда я запускаю код и переменная $ session проверяется в phpfile, он будет нулевым, и он выведет сообщение, которое я сделал.
Мой вопрос: почему моя переменная $ session пуста в моем php-файле?
Заранее спасибо!
Связанный вопрос:
Facebook PHP SDK v4.0 FacebookJavaScriptLoginHelper возвращает состояние NULL
Задача ещё не решена.
Других решений пока нет …