Пожалуйста, мне нужна помощь. Я занимаюсь этой проблемой в течение 1 месяца!
Я хотел бы использовать facebook connect login для своего сайта, используя PHP и php-sdk 3.1.1. В нескольких словах мой код работает в автономном режиме (на локальном хосте), но не в сети, что приводит к «Слишком много циклов переадресации (в Chrome)»: Ошибка 310 (net :: ERR_TOO_MANY_REDIRECTS): было слишком много перенаправлений.
Вот мой код:
1 / Я загружаю facebook, подключая SDK и инициализируя его:
require 'src/facebook.php'; $facebook = new Facebook(array( 'appId' => '209633612480053', 'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx' ));
Обратите внимание, что я создал два приложения на странице facebook-developper, один для автономных тестов, а другой для онлайн-тестов. И я уверен, что правильно переключаться между двумя парами appId / secret (онлайн и офлайн) при тестировании. Таким образом, это не проблема плохого facebbok-connect init.
2 / Я пытаюсь получить информацию о пользователе:
$uid = $facebook->getUser(); if($uid) { /* * Get user information. */ $user = $facebook->api('me/'); print_r($user); // Display user info. } else { /* * Redirect to FB login URL to allow access. */ $loginURL = $facebook->getLoginURL(); echo '<script> top.location.href=\''.$loginURL.'\'</script>'; }
Это так просто: если пользователь подключен к facebook, отобразите его информацию, иначе перенаправите страницу входа в facebook, чтобы разрешить доступ.
ЭТО РАБОТАЕТ СОВЕРШЕННО ОФЛАЙН, но в сети, я получаю ошибку хрома:
This webpage has a redirect loop The webpage at https://www.facebook.com/dialog/oauth?client_id=209633612480053&redirect_uri=http%3A%2F%2Fwww.bluward.com%2Foauth%2Ffacebook&state=551f60cd4be6cd8ed1622f8168a5219a#_=_ has resulted in too many redirects. Clearing your cookies for this site or allowing third-party cookies may fix the problem. If not, it is possibly a server configuration issue and not a problem with your computer.
Некоторая дополнительная информация: онлайн, я использую хост провайдера 1and1 и, конечно же, имею ту же конфигурацию сервера, что и автономный сервер (который является MAMP Pro), я загрузил файл sams php.ini.
Пожалуйста, если у кого-то есть идея или возникнет аналогичная проблема, я буду рад получить помощь.
Заранее благодарю за помощь.
ОБНОВИТЬ:
Я обновил свой код, чтобы сосредоточиться на проблемной строке, поэтому вместо перенаправления на страницу входа в facebook я показываю URL-адрес перенаправления, поэтому мне просто нужно щелкнуть, чтобы войти в систему:
$uid = $facebook->getUser(); if($uid) { /* * Get user information. */ $user = $facebook->api('me/'); print_r($user); // Display user info. } else { /* * Redirect to FB login URL to allow access. */ $loginURL = $facebook->getLoginURL(); echo $loginURL; // <-- HERE I CHANGED THE CODE TO DISPLAY LOGIN URL }
Я заметил, что facebook бесконечно перенаправляется на мою страницу скриптов. Изменяется только параметр code
на панели URL.
Итак, почему facebbok перенаправляет на мою страницу скрипта, не указав мне информацию о пользователе?
Пожалуйста, любая идея?
У меня была эта проблема, в моем случае мне пришлось редактировать base_facebook.php из SDK:
public static $CURL_OPTS = array( CURLOPT_CONNECTTIMEOUT => 10, CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 60, CURLOPT_USERAGENT => 'facebook-php-3.2', CURLOPT_SSL_VERIFYPEER => false, CURLOPT_SSL_VERIFYHOST => false, );
Последние два варианта я добавил вручную.
У меня была аналогичная проблема с браузером Chrome, файлы cookie всегда были неправильными или пустыми.
Затем я загрузил пример из facebook из Heroku (он использует всплывающее окно в качестве логина вместо перенаправления js) и заметил, что он не работает в chrome, когда базовый URL-адрес веб-сайта не является корневым URL-адресом сервера (например: localhost/somedirectory/
). Но после создания виртуального хоста он выглядит так, как будто он работает.
Вы можете увидеть пример index.php из приложения здесь https://gist.github.com/2845986