facebook connect- $ user_id = $ facebook-> getUser (); всегда возвращается 0

Прежде чем я скажу что-то, я хочу сказать, что у меня GOOGLEd много, и было много страниц (включая многие из таких вопросов) с разнообразием решений … но я пробовал каждый из них один за другим, но, к сожалению, никто из них не работал для меня

с facebookphp-sdk Я пытаюсь войти в систему пользователем. в первых случаях он работал отлично (2-3 дня назад.) . Сегодня, когда я снова начал работать с моим проектом, он больше не работает. Когда я пытаюсь войти в систему, пользователь $facebook->getUser() is returning 0 .Buts 3 дня назад, он работал.

я использовал приведенный здесь код :: developers.facebook.com и да, я внес некоторые изменения, которые приводятся с полным кодом ниже

МОЙ КОД :: 0auth_provided_by_facebook.php

 include_once $_SERVER['DOCUMENT_ROOT'].'dist/facebook-php-sdk/src/facebook.php'; $config = array( 'appId' => '***********', 'secret' => '*********', 'allowSignedRequest' => false, // optional but should be set to false for non-canvas apps 'cookie' => true, 'oauth' => true ); $facebook = new Facebook($config); $user_id = $facebook->getUser(); if($user_id) { try { $user_profile = $facebook->api('/me','GET'); } catch(FacebookApiException $e) { $login_url = $facebook->getLoginUrl(array( scope'=>'email,user_location,user_photos,publish_actions,publish_stream,basic_info', 'redirect_uri' => 'http://localhost/dist/include/0auth_provided_by_facebook.php' )); echo '<a href="' . $login_url .'"> PLEASE CLICK HERE </a>'; error_log($e->getType()); error_log($e->getMessage()); } } else { $login_url = $facebook->getLoginUrl(array( 'scope' => 'email,user_location,user_photos,publish_actions,publish_stream,basic_info', 'redirect_uri' => 'http://localhost/dist/include/0auth_provided_by_facebook.php' )); echo '<a href="' . $login_url .'"> PLEASE CLICK HERE </a>'; } 

OUTPUT: getUser () всегда возвращает 0.


как мой процесс входа в систему описан ниже:

после нажатия на <a href="login_fb">Login using fb </a> элемент управления переходит к моему localhost/dist/index.php теперь мой index.php include указанный выше код wriiten, который находится в другом каталоге localhost/dist/include/0auth_provided_by_facebook.php из этого файла я все обрабатываю. при успешном завершении и неудаче входа в facebook возвращает значение здесь. Затем, после успешного входа в систему, пользователь снова перенаправляется на родину


Теперь вот он полный список настроек моего приложения, которые я включил или отключил или изменил

  1. App Domains : blank(according to the answer) 2. Site URL : `http://localhost/dist/include/0auth_provided_by_facebook.php?` 3. Native or desktop app? Disabled 4. Deauthorize Callback URL : `http://localhost/dist/include/0auth_provided_by_facebook.php?` 5. Social Discovery : enabled 6. Client OAuth Login : enabled 7. Embedded browser OAuth Login :enabled 8. App Secret Proof for Server API calls :enabled 9. Require 2-factor reauthorization : disabled 10. Valid OAuth redirect URIs :`http://localhost/dist/include/0auth_provided_by_facebook.php?` (according to the suggesion given in the answer) 11. Stream post URL security : enabled 

это были детали. $user_id = $facebook-> getUser(); всегда возвращает 0 во всех условиях. как я могу это решить?


для получения дополнительной информации .. Thhough я не знаю, это поможет вам не … Я проходил через base_facebook.php, и я обнаружил, что он возвращает ноль из-за того, if(signed_request) всегда false.

Solutions Collecting From Web of "facebook connect- $ user_id = $ facebook-> getUser (); всегда возвращается 0"

Чтобы избавиться от этой проблемы, вам нужно сделать следующее

+ Изменить

 $login_url = $facebook->getLoginUrl(array( 'scope' => 'email,user_location,user_photos,publish_actions,basic_info', 'redirect_uri' => 'http://localhost/dist/' )); 

в

 $login_url = $facebook->getLoginUrl(array( 'scope' => 'email,user_location,user_photos,publish_actions,basic_info', 'redirect_uri' => 'http://localhost/dist/index.php' )); 

Оставьте имя домена пустым в следующей настройке. Не предлагайте localhost.com

 App Domains : localhost.com 

затем

 Valid OAuth redirect URIs :http://localhost/dist/ 

в

 Valid OAuth redirect URIs :`http://localhost/dist/index.php 

Теперь попробуйте там.

измените секрет своего приложения на странице конфигурации приложения. Затем используйте это новое приложение на вышеуказанной странице. Выделите все файлы cookie в браузере и попробуйте загрузить страницу, на которой вы получите правильный ответ.

для меня это звучит проблема локального хоста, если вы можете использовать домен для тестирования своего кода. У меня есть система входа на одну страницу, работающая на моем сайте. Я могу отправить вам весь код, как бы вы выглядели хорошо.

Отредактируйте библиотеку base_facebook.php и замените существующую getCode() на

 protected function getCode() { $server_info = array_merge($_GET, $_POST, $_COOKIE); if (isset($server_info['code'])) { if ($this->state !== null && isset($server_info['state']) && $this->state === $server_info['state']) { $this->state = null; $this->clearPersistentData('state'); return $server_info['code']; } else { self::errorLog('CSRF state token does not match one provided.'); return false; } } return false; }