Разработка API-интерфейса Facebook Connect Javascript на локальном хосте

Я пытаюсь написать некоторые функции javascript для интеграции с потоком Facebook. Однако они работают только в том случае, если вы разрабатываете их непосредственно на реальном сервере, чтобы Facebook мог получить доступ к файлу xd_receiver.htm, который они просят меня разместить в www.mydomain.com/xd_receiver.htm. Однако вы все, наверное, согласны с тем, что на живых серверах действительно важно не разрабатывать.

Вот что я пробовал до сих пор:

  • Размещение xd_receiver.htm на реальном сервере и запуск моих скриптов на моем сервере-разработчике, надеясь, что API-ключ скажет серверу Facebook искать xd_receiver.htm на моем сервере-сервере... не повезло
  • Подписание двух ключей API с помощью Facebook: ключ разработчика, указывающий на 127.0.0.1, и живой, указывающий на мой живой сайт. Теория здесь заключалась в том, что если xd_receiver.htm требовался только локально, то он мог бы найти ее через 127.0.0.1... не повезло

Кто-нибудь понял, как это сделать? Они не могут рассчитывать на то, что мы будем развивать наши Facebook-приложения исключительно вживую без песочницы Dev.

Некоторая справочная информация о том, что она стоит: с помощью ASP.NET с VB, но надеясь использовать исключительно Javascript.

Ответ 1

Определенно можно использовать локальные файлы xd_receiver.htm. Я разработчик приложений для Facebook по профессии, и у меня есть десятки из них.

Вы ближе всего к правильному ответу со своим # 2 выше. Способ сделать это - создать две версии вашего приложения. Если бы я делал "MyApp", у меня могло бы быть два URL-адреса Canvas страницы "myapp" и "myapp-dev" и соответствующие URL-адреса обратного вызова Canvas "www.myapp.com" и "192.168.1.1". Каждый из них представляет собой отдельное приложение Facebook со своим собственным ключом API и т.д.

apps.facebook.com/myapp перейдет на мой живой сервер, а apps.facebook.com/myapp-dev пойдет на мою локальную машину разработки. Вы должны убедиться, что Facebook может добраться до вашей машины разработки, конечно.

Тем не менее, все должно хорошо работать. Вам даже не нужны разные версии файла xd_receiver.htm, так как содержимое файла всегда одинаково для каждого приложения. Если ваша строка FB.XdComm.Server.init("/xd_receiver.htm"); указывает на нужный файл, она должна работать.

Я управляю ключами и путями API и т.д. в файле конфигурации и имею один файл конфигурации для каждого приложения, будь то разработчик или производственное приложение. Это упрощает вывод правильных ключей и путей на страницах приложения.

Вы можете сохранить приложение для разработки в режиме песочницы и выполнить всю работу на своей локальной машине.

Ответ 2

Самый простой способ - настроить локальный DNS таким образом, чтобы для вашего обратного вызова был возвращен адрес localhost-адреса. В Windows вы можете легко достичь этого с помощью следующей записи в \windows\system32\drivers\etc\hosts "127.0.0.1 your_production_xd_receiver_callback_url". Конечно, вам нужно запустить ваш сервер на порту 80. В Windows это простая задача, поскольку в UNIX-системе нет никаких контентов безопасности:) Вам нужно настроить его, так как это порт ниже 1024. Это решение проверено и работает для меня.