Facebook Connect от Localhost, делает странные вещи - PullRequest
3 голосов
/ 06 января 2010

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

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

  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. В конце, перед тегом закрытия тела: 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'];
  }

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

Ответы [ 3 ]

1 голос
/ 22 января 2010

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

0 голосов
/ 27 августа 2011

Попробуйте отредактировать файл 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

0 голосов
/ 06 января 2010

Не знаю точно, но подозреваю, что проблема в том, что вы работаете на своей локальной машине.

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

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

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

FB.init(fbkey);

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

Также я считаю, что тег сценария для включения в файл FeatureLoader.js в Facebook должен быть перед вашим тегом , а не после тега

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...