Настройка входа в Facebook на локальном хосте

Я выполнил шаги, описанные здесь, чтобы создать вход в приложение Facebook: http://developers.facebook.com/docs/howtos/login/server-side-login/

И нахожусь на шаге 3. Я настраиваю это на локальном хосте для разработки, а затем публикую на веб-сайтах Azure с другим идентификатором приложения. Я бы хотел, чтобы это сначала работало на локальном хосте. (Я еще не пробовал это с доменом, отличным от 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», выглядит нормально, как и URL-адрес входа в 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 на локальном хосте Опять же, они предлагают Адрес сайта. Они также говорят о app-canvas, который я не использую, и я не понимаю, как это будет связано с входом в систему.

Что бы это ни стоило, прежде чем я установил URL-адрес сайта и домен, я получил другую ошибку, которая сказала мне, что мне нужно установить URL-адрес сайта.


person MattD    schedule 02.02.2013    source источник


Ответы (1)


этот код работал для меня. дважды проверьте идентификатор вашего приложения facebook, и URL-адрес моего сайта установлен на http://localhost:8052/ действительно не нужно устанавливать доменное имя для входа в систему, спасибо

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>");
} 
?>
person rana    schedule 02.02.2013
comment
Я думаю, что приложение, которое я использовал, было взломано. Я создал новое приложение на Facebook, и оно работало нормально. Старый, который я использовал, я создал около 10 лет назад и никогда ничего с ним не делал. Может что-то изменилось с тех пор... - person MattD; 03.02.2013