Im работает на моем localhost, используя FB PHP SDK 4.0. Я смог завершить вход с помощью JS SDK, теперь я пытаюсь получить доступ к некоторой информации через PHP SDK.
На каждой странице я добавляю этот код js и php.
JavaScipt
window.fbAsyncInit = function() { FB.init({ appId : 'app-id', xfbml : true, version : 'v2.1', status : true, cookie : 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/en_US/sdk.js"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));
PHP
session_start(); //NO COMPOSER require '/path-to/autoload.php'; use Facebook\FacebookSession; use Facebook\FacebookJavaScriptLoginHelper; FacebookSession::setDefaultApplication('app-id', 'app-secret'); $helper = new FacebookJavaScriptLoginHelper(); try { $session = $helper->getSession(); } catch(FacebookRequestException $ex) { // When Facebook returns an error } catch(\Exception $ex) { // When validation fails or other local issues } if ($session) { // Logged in. }
На JavaScript, когда я вызываю FB.getLoginStatus (), он дает мне успешный ответ. Однако на стороне PHP всякий раз, когда я сбрасываю $helper
он возвращается с ["state"]=> NULL
. Я убедился, что мой идентификатор приложения совпадает.
Я думал, что они обмениваются сообщениями через cookie
но когда я просматриваю свои файлы cookie и данные сайта, я не могу найти что-то важное. Или мне нужен токен доступа, чтобы сделать это?
Он работает, когда я тестировал Firefox. На самом деле это проблема Chrome: Google Chrome не поддерживает файлы cookie для локальных файлов (включая localhost), если вы не запустите его с помощью флага –enable-file-cookies. Тем не менее, Chrome поддерживает файлы cookie, если вы используете локальный IP-адрес-127.0.0.1- для тестирования.