Я попытался использовать новейший sdk php для разработки приложения с моим сайтом. но я всегда не получаю правильный сеанс. то я проверяю файл sdk и обнаруживаю, что isValidRedirect() возвращает false. Я попытался изменить настройки приложения, но не работал для меня. так, ребята, пожалуйста, проверьте вложение и где не так?
есть мой код ниже:
//localhost/facebook/demo.php
<?php
@session_start();
// added in v4.0.0
// Skip these two lines if you're using Composer
require __DIR__ . '/autoload.php';
//require 'functions.php';
use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;
use Facebook\FacebookRequest;
use Facebook\FacebookResponse;
use Facebook\FacebookSDKException;
use Facebook\FacebookRequestException;
use Facebook\FacebookAuthorizationException;
use Facebook\GraphObject;
use Facebook\Entities\AccessToken;
use Facebook\HttpClients\FacebookCurlHttpClient;
use Facebook\HttpClients\FacebookHttpable;
// init app with app id and secret
FacebookSession::setDefaultApplication( 'app_id','app_secrect' );
// login helper with redirect_uri
$helper = new FacebookRedirectLoginHelper('http://demo.localhost/facebook/demo.php/' );
$loginUrl = $helper->getLoginUrl();
echo '<hr />';
echo $loginUrl;
echo '<hr />';
try {
$session = $helper->getSessionFromRedirect();
// $request = new FacebookRequest( $session, 'GET', '/me' );
// print_r($request);
} catch( FacebookRequestException $ex ) {
echo 22;
// When Facebook returns an error
} catch( Exception $ex ) {
echo 33;
// When validation fails or other local issues
}
?>
<a href="<?php echo $helper->getLoginUrl(); ?>">Login with Facebook</a></div>
Благодарю.
php file url: demo.localhost/facebook/demo.php
Безопасный URL холста: demo.localhost/facebook/
Сайт: URL сайта: demo.localhost/facebook/Мобильный сайт: demo.localhost/facebook/
Деактивировать URL-адрес обратного вызова: https://demo.localhost/facebook/
Сегодня у меня была такая же проблема, и я заметил, что состояние всегда отличается от состояния в сеансе и возвращенного состояния.
После нескольких поисковых запросов кто-то упомянул в другом сообщении (ошибка входа в PHP facebook SDK 4.0), что функция getLoginUrl() изменяет значение переменной состояния. Как было предложено в этой статье и в комментарии, вам нужно переместить $helper->getLoginUrl()
после $helper->getSessionFromRedirect()
. Меня устраивает.
Надеюсь, это поможет.