Facebook подключается с локального хоста, делает какие-то странные вещи

#php #facebook #localhost

#php #Facebook #localhost

Вопрос:

Так что, возможно, документация устарела, или я просто не здесь. Но я создал множество приложений FB iframe (connect), но я запускаю свой первый сайт FB Connect. Запускаю его с локального хоста, и URL подключения является http:// my_external_IP_address . Когда я нажимаю на кнопку входа в FACEBOOK на своем сайте, появляется сообщение с надписью «ожидание facebook», и в этом окне возвращается мой сайт с URL-адресом сверху и http:// mysite/?session={session key, user_id, etc.} идентификатором пользователя, который соответствует моему идентификатору FB. И поэтому он думает, что я вошел в систему. Если я закрою всплывающее окно, я не войду в систему. Я не уверен, почему всплывающее окно не выполняет обычное диалоговое окно fb connect. Я выполняю эти шаги.

(Я добавил пробелы в http:// as, чтобы не быть обнаруженным как «спам»)

  1. html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml"
  2. сразу после <body> <script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php" type="text/javascript">
  3. В конце, перед тегом body close: script type="text/javascript">
    FB.init("fbkey", "http://127.0.0.1/xd_receiver.htm");
    Я пробовал использовать xd_receiver.htm , /xd_receiver.htm (и другие комбинации), и это приводит к появлению пустой страницы. используя http://127.0.0.1 по крайней мере, что-то делает.

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

  require_once('includes/facebook.php');
  $facebook = new Facebook($fbkey, $fbsec); 
  $user_id = $facebook->get_loggedin_user();

  if($user_id > 0){
    $user = $ac->getUserFromFB($user_id);
    $_SESSION['user_id'] = $user['user_id'];
  }
  

Идентификатор пользователя всегда пуст, когда я выводлю его на экран для тестирования. Событие сеанса также никогда не происходит. Итак, я не знаю, что он делает во всплывающем окне, но я думаю Facebook думает, что он регистрирует меня. Не уверен. На этом я в тупике. Буду признателен за любую помощь. Спасибо!

Ответ №1:

Лично я обнаружил, что самый простой способ справиться с facebook connect — это использовать winscp для синхронизации моего localhost с сервером с каким-нибудь доменом где-нибудь. Поскольку fb connect подключен к приложению, это приложение должно быть привязано к домену, где генерируется ключ api. Неудивительно, что где-то там ваш localhost не работает.

Ответ №2:

Я не знаю наверняка, но подозреваю, что проблема связана с тем, что вы работаете на своем локальном компьютере.

Я предполагаю, что сервер Facebook не сможет найти ваш компьютер на 127.0.0.1, поскольку это локальный IP-адрес. Вы могли бы попробовать использовать что-то вроде whatisyourip.com чтобы получить ваш фактический удаленный ip и использовать его вместо этого, но даже тогда вам нужно будет убедиться, что у вас настроена необходимая переадресация портов, чтобы сервер FB мог получить доступ к вашему локальному компьютеру.

В целом, для такого рода сайтов, я думаю, было бы проще разрабатывать на внешнем сервере, а не в локальной среде.

Кстати, мне не нужно вводить второй параметр для FB.init() — я просто использую

 FB.init(fbkey);
  

Если вы еще этого не сделали, вы могли бы попробовать полностью удалить это, чтобы посмотреть, поможет ли это.

Также я думаю, что тег скрипта для включения facebook FeatureLoader.js должно быть перед вашим тегом </head>, а не после тега <body>

Комментарии:

1. Я попытался удалить текст xd_receiver из FB.init(), изменил 127.0.0.1 на свой внешний IP (хотя это всего лишь ссылка на JS-функцию FB.init, поэтому я думаю, что local подойдет), и я удалил featureloader из тега head. И попробовал комбинацию из трех, но безуспешно. Во всплывающем окне по-прежнему отображается мой веб-сайт. Хотя спасибо за помощь.

Ответ №3:

Попробуйте отредактировать свой файл hosts, чтобы указать имя хоста (не имеет значения, что это такое, главное, чтобы вы установили его в качестве имени хоста, связанного с вашим приложением в настройках) на 127.0.0.1, а затем перезагрузите свой браузер и посетите свое локальное приложение через домен, указанный вами в файле hosts. Это должно позволить вам протестировать большинство функций, связанных с FB. Основным исключением будет кнопка «Мне нравится», потому что это зависит от того, смогут ли серверы Facebook также получить доступ к вашему приложению в соответствующем домене.

Пример строки hosts:

 127.0.0.1    www.example.com
  

Если вы добавите вышеупомянутый файл /etc / hosts и перезапустите свой браузер, вы можете заменить компонент «127.0.0.1» тестируемого URL на www.example.com и это будет так, как если бы домен, связанный с вашим приложением, действительно был www.example.com