Intereting Posts
SHA1 vs md5 vs SHA256: что использовать для входа в PHP? Валидация пользовательских данных не работает Что делает точка-косая черта для PHP, включая вызовы? Прерывистые 500 ошибок Apache, работающих под управлением Zend Framework с несколькими виртуальными хостами Преобразование широты / долготы в название города? (обратная геолокация) Обновление базы данных на __destruct ()? Действительно ли инъекция SQL возможна путем добавления второго запроса? Совместимость браузера jQuery (IE) wordbar sidebar loops не работают, когда в search.php, когда не найдено ни одного результата Отменить класс html jquery переключает между двумя формами Проверка доступности имени пользователя с использованием AJAX и PHP для MSSQL RabbitMQ вызывает функцию обратного вызова для потребителя, когда у него есть какое-то сообщение? Как получить перевод с другого модуля в PrestaShop? удалить комментарии из html исходного кода

facebook login возвращает код как переменную в строке запроса

Я использую вход в Facebook на одном из моих веб-сайтов, используя sdk для PHP.

Иногда работает facebook login, а иногда нет.

Вот мой index.php:

/// fb login area..... include("facebook/src/facebook.php"); $facebook = new Facebook(array( 'appId' => '159326560901256', 'secret' => 'c6b30bd2f80747b64d5b1d15a3da9e9c', )); $user = $facebook->getUser(); $loginUrl = $facebook->getLoginUrl(array( 'scope' => 'email', 'redirect_uri' => 'http://xyz.com/login_fb.php' )); <a href="<?=$loginUrl?>"><img class="fb_img" src="images/fb_logo.png" width="153" height="38" /></a> 

он переходит в login_fb.php :

https://www.facebook.com/dialog/oauth?client_id=123131231&redirect_uri=http%3A%2F%2Fxyz.com%2Flogin_fb.php&state=403bc8aaf9eaee4064e3cc27befc71ff&scope=email

теперь на login_fb.php я получаю этот URL:

 login_fb.php?code=ASA&S^&*A^S&*A^S&*^A&*ASUAUIYSUIYASIYAUSYUIASA 

и в $user я получаю 0

 /// code for login_fb.php include("facebook/src/facebook.php"); $facebook = new Facebook(array( 'appId' => '159326560901256', 'secret' => 'c6b30bd2f80747b64d5b1d15a3da9e9c', )); // Get User ID $user = $facebook->getUser(); if ($user) { try { $user_profile = $facebook->api('/me'); } catch (FacebookApiException $e) { error_log($e); $user = null; } $logoutUrl = $facebook->getLogoutUrl(array( 'next' => 'http://minuteville.com/index.php?val=fblogout' )); в /// code for login_fb.php include("facebook/src/facebook.php"); $facebook = new Facebook(array( 'appId' => '159326560901256', 'secret' => 'c6b30bd2f80747b64d5b1d15a3da9e9c', )); // Get User ID $user = $facebook->getUser(); if ($user) { try { $user_profile = $facebook->api('/me'); } catch (FacebookApiException $e) { error_log($e); $user = null; } $logoutUrl = $facebook->getLogoutUrl(array( 'next' => 'http://minuteville.com/index.php?val=fblogout' )); 

Почему он не работает?

Добавив следующую строку и используя getAccessTokenFromCode в Facebook SDK, проблема может быть решена.

Код acesss истекает. Таким образом, получение нового кода доступа путем обмена кодом устраняет проблему

$access_code = $facebook->getAccessTokenFromCode($_GET['code']);

https://developers.facebook.com/docs/howtos/login/server-side-login/#step6

Вы должны иметь возможность создать токен доступа с параметром кода, чтобы получить пользователя. Все написано в документе.