Я выполнял шаги, описанные здесь, чтобы создать приложение для входа в Facebook: http://developers.facebook.com/docs/howtos/login/server-side-login/
И я на шаге 3. Я настраиваю это на localhost для разработки, а затем я опубликую на Azure Websites с другим идентификатором приложения. Однако я бы хотел, чтобы это работало на localhost. (Я еще не пробовал это с доменом не-localhost.)
На моей странице конфигурации приложения Facebook я установил пару соответствующих полей: URL-адрес сайта: http: // localhost: 8052 / (Пространства добавлены, чтобы разрешить подачу в Stack Overflow). Домены приложений: localhost
main.php перенаправляет страницу входа в систему, если нет кода Facebook. Это прекрасно работает.
<head> <?php if(!isset($_SESSION['code'])) { echo ('<meta http-equiv="REFRESH" content="0;url=/login.php" />'); } ?> </head>
login.php перенаправляет на страницу входа в Facebook, используя код, скопированный из их примера.
<?php include '/lib/url.php'; $app_id = "XXXXX"; $app_secret = "XXXXX"; $my_url = CreateUrlForPage('welcome.php'); session_start(); $code = ''; if(!isset($_REQUEST["code"])) { $_SESSION['state'] = md5(uniqid(rand(), TRUE)); // CSRF protection $dialog_url = "https://www.facebook.com/dialog/oauth?client_id=" . $app_id . "&redirect_uri=" . urlencode($my_url) . "&state=" . $_SESSION['state']; echo $my_url.'<br/>'; echo $dialog_url.'<br/>'; echo("<script> top.location.href='" . $dialog_url . "'</script>"); } ?>
Очевидно, я обфускал свой идентификатор приложения выше.
URL-адрес, сгенерированный моей функцией «CreateUrlForPage», выглядит так же хорошо, как и адрес входа в facebook:
http://localhost:8052/welcome.php https://www.facebook.com/dialog/oauth?client_id=XXXX&redirect_uri=http%3A%2F%2Flocalhost%3A8052%2Fwelcome.php&state=XXXX
(Опять же, некоторые обфускации здесь. Реальные значения выглядели хорошо. Первый – целое число, второе – длинная шестнадцатеричная строка.)
Когда я перехожу к http: // localhost: 8052 / login.php, страница перенаправляется на Facebook и дает абсолютно бесполезную ошибку: «Произошла ошибка. Повторите попытку позже».
Я посмотрел еще пару сообщений о переполнении стека, но они не решили мою проблему.
Ошибка, которую я получаю, выглядит так же, как описанная здесь: Ошибка входа в приложение Facebook на локальном хосте. Предлагаемое предложение – установить URL-адрес домена и сайта, который я сделал.
Существует также ссылка на этот вопрос: Запуск приложения Facebook на локальном хосте. Опять же, они предлагают URL-адрес сайта. Они также говорят о приложении-canvas, который не является тем, что я использую, и я не вижу, как это будет связано с логином.
Для чего это стоит, прежде чем я установил URL-адрес сайта и домен, у меня возникла другая ошибка: одна, которая сказала мне, что мне нужно установить URL-адрес сайта.
этот код работал для меня. дважды проверьте свой идентификатор приложения facebook, а URL-адрес моего сайта настроен на http: // localhost: 8052 / dont действительно нужно указать имя домена для входа в систему
http://gamma.owlweb.com.ua/index.php/?route=account/register/fb
<?php $app_id = "xxx"; $app_secret = "xxx"; $my_url ="http://localhost:3080/abc.php"; session_start(); $code = ''; if(!isset($_REQUEST["code"])) { $_SESSION['state'] = md5(uniqid(rand(), TRUE)); // CSRF protection $dialog_url = "https://www.facebook.com/dialog/oauth?client_id=".$app_id ."&redirect_uri=".urlencode($my_url) ."&state=".$_SESSION['state']; echo $my_url.'<br/>'; echo $dialog_url.'<br/>'; echo("<script> top.location.href='" . $dialog_url . "'</script>"); } ?>