после различных попыток я решил написать здесь мою проблему с логином FB PHP с SDK 4.0.0.
Проблема в том, что я не могу получить сеанс, и я не знаю почему.
Мой код (помещенный в файл с именем «social.php») выглядит следующим образом:
session_start();
define('fbsdk', "/fbsdk/src/Facebook/");
require __DIR__ . '/fbsdk/autoload.php';
use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;
use Facebook\FacebookRequest;
use Facebook\FacebookResponse;
use Facebook\FacebookSDKException;
use Facebook\FacebookRequestException;
use Facebook\FacebookAuthorizationException;
use Facebook\GraphUser;
if(isset($_GET['login'])){
if($_GET['login'] == "fb"){
$appid = "677652872357474";
$appsecret = "******";
FacebookSession::setDefaultApplication($appid, $appsecret);
$helper = new FacebookRedirectLoginHelper('http://localhost/ffideasbox/');
try{
$session = $helper->getSessionFromRedirect();
} catch(FacebookRequestException $ex){
print_r($ex);
} catch(Exception $ex){
print_r($ex);
}
if(isset($session)){
echo "Session defined: ".$session;
} else {
echo "Session not defined";
}
} elseif($_GET['login'] == "tw"){
} elseif($_GET['login'] == "gp"){
} else {
...
}
} else {
....
}
?>
Если я иду на страницу документации сессии (https://developers.facebook.com/docs/php/FacebookSession/4.0.0), это говорит мне, что я могу получить сессию:
// If you already have a valid access token:
$session = new FacebookSession('access-token');
// If you're making app-level requests:
$session = FacebookSession::newAppSession();
В конце концов, какой токен доступа? И как я могу получить это?
Затем, после публикации здесь, я добавил перед сессией блок TRY, этот другой:
$ session = FacebookSession :: newAppSession ();
try{
$session->validate();
} catch(FacebookRequestException $ex){
echo $ex->getMessage();
} catch(\Exception $ex){
echo $ex->getMessage();
}
Но я все еще получаю то же сообщение: «Сеанс не определен» (записано мной в блоке сеанса IF).
Может ли кто-нибудь рассказать мне больше о FBSDK? Я читаю документацию, но мало что понимаю.
Спасибо вам всем.
РЕДАКТИРОВАТЬ: я также добавить «карту» из папки SDK
-mainfolder
|-fbsdk
|-autoload.php
|-src
|-Facebook
|-All the complete facebook sdk
После того, как я искал примеры и многое другое, я посмотрел, что я не добавил кусок
$loginUrl = $helper->getLoginUrl();
header("Location: ".$loginUrl);
в isset ($ session) остальное. Это потому, что я не понимал, зачем это нужно, а когда сессия не определена, я никуда не перенаправлял.
if(isset($session)){
echo "Session defined: ".$session;
} else {
$loginUrl = $helper->getLoginUrl();
header("Location: ".$loginUrl);
}
Других решений пока нет …