Запуск приложения Facebook на localhost

Я планирую подключиться к чату Facebook с моего локального хоста. Мне нужно будет получить ключ сеанса от Facebook. Когда я указываю URL-адрес сайта localhost:8080 или ip-address:8080, он не работает.

Я читал о настройке двух приложений с двумя разными ключами API, которые запускаются на dev m/c и других на localhost, но я не совсем понял.

Кто-нибудь может объяснить, как запустить приложение Facebook на локальном хостинге?

Ответ 1

Я написал tutorial об этом некоторое время назад.

Наиболее важным моментом является "URL-адрес сайта":

URL-адрес сайта: http://localhost/app_name/

Если структура папки выглядит примерно так:

app_name
¦   index.php
¦
+---canvas
¦   ¦   index.php
¦   ¦
¦   +---css
¦           main.css
¦           reset.css
¦
+---src
        facebook.php
        fb_ca_chain_bundle.crt

EDIT:
Kavya: , как сервер FB распознает мой локальный хост даже без IP-адреса или порта

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

Например, у вас есть файл на вашем онлайн-сервере с контентом (например, online.php):

<iframe src="http://localhost/test.php" width="100%" height="100%">
    <p>Not supported!</p>
</iframe>

И в вашем корневом каталоге localhost укажите файл test.php:

<?php echo "Hello from Localhost!"; ?>

Теперь посетите http://your_domain.com/online.php, вы увидите содержимое своего локального хоста!

Вот почему в режиме реального времени подписки и деавторизованные обратные вызовы (просто говоря) не будут работать с URL-адресами localhost! потому что Facebook будет пинговать (отправлять http-запросы) этим URL-адресам, но, очевидно, сервер Facebook не будет переводить эти URL-адреса на ваш!

Ответ 2

если вы используете localhost:

в Facebook → Настройки → Основные,  в поле "Домены приложений" пишут "localhost",  затем нажмите "+ Добавить платформу", выберите "Веб-сайт",

он создаст два поля: "URL-адрес мобильного сайта" и "URL-адрес сайта",  в "URL сайта" снова напишите "localhost".

работает для меня.

Ответ 3

Вы также можете отредактировать файл "hosts" и создать локальный вариант своего домена.

Пример

Если ваш реальный адрес приложения facebook "example.com", вы можете создать домен "localhost.example.com" (доступный только из вашего компьютера) в вашем файле "hosts", указывая на "localhost" и запустить свой локальный веб-сайт в этот домен. Вы можете обмануть Facebook таким образом.

Ответ 4

В основных настройках вашего приложения (https://developers.facebook.com/apps) в разделе "Настройки- > Основные- > Выберите, как ваше приложение интегрируется с Facebook...

Используйте "URL-адрес сайта" и "URL-адрес мобильного сайта:", чтобы сохранить URL-адреса вашего производства и разработки. Оба сайта будут допущены к аутентификации. Я просто использую Facebook для аутентификации, поэтому мне не нужны функции перенаправления мобильных сайтов. Обычно я изменяю "URL мобильного сайта:" на мой сайт "localhost: 12345", пока я тестирую аутентификацию, а затем возвращаю его в нормальное состояние, когда я закончил.

Ответ 5

2013 август. Facebook не разрешает устанавливать домен с портом для приложения, например, "localhost: 3000".

Итак, вы можете использовать https://pagekite.net, чтобы туннелировать ваш localhost:port в правильный домен.

Разработчики Rails могут бесплатно использовать http://progrium.com/localtunnel/.

  • Facebook позволяет только один домен для приложения в то время. Если вы пытаетесь добавить еще один, как localhost, он покажет какую-то другую ошибку в домене. Обязательно используйте только один домен для обратного вызова и для настройки домена домена в то время.

Ответ 6

Итак, сегодня я получил эту работу. Мой URL http://localhost:8888. Домен, который я дал facebook, - localhost. Я думал, что он не работает, потому что я пытаюсь извлечь данные с помощью метода FB.api. Я продолжал получать имя "undefined" и изображение без источника, поэтому определенно не имел доступа к графику.

Позже я понял, что моя проблема в том, что я передавал только первый аргумент /me в FB.api, и у меня не было токена. Поэтому вам нужно использовать функцию FB.getLoginStatus для получения токена, который должен быть добавлен к аргументу /me.

Ответ 8

Хорошо, я не уверен, что с этими ответами, но я дам вам знать, что сработало для меня, как советовал старший разработчик в моей работе. Я работаю в Ruby on Rails и используя код JavaScript для Facebook, чтобы получить токены доступа.

Проблема. Чтобы выполнить аутентификацию, Facebook берет URL-адрес из адресной строки и сравнивает это с тем, что у них есть в файле. Они не позволяют использовать localhost:3000 по какой-либо причине. Однако вы можете использовать полностью настроенное доменное имя, например yoursite.dev, запустив локальный сервер и указав yoursite.dev на 127.0.0.1:3000 или везде, где указывал ваш локальный хост.

Шаг 1: установите или обновите Nginx

$ brew install nginx (установить) или $ brew upgrade nginx (обновление)

Шаг 2. Откройте файл конфигурации nginx.

/usr/local/etc/nginx/nginx.conf (обычно здесь)

/opt/boxen/config/nginx/nginx.conf (если вы используете Boxen)

Шаг 3 Добавьте этот бит кода в блок http {}

Замените proxy_pass тем, куда вы хотите указать yoursite.dev to. В моем случае он заменял localhost: 3000 или эквивалентный 127.0.0.1:3000

server {
  listen       yoursite.dev:80;
  server_name  yoursite.dev;
  location / {
    proxy_pass http://127.0.0.1:3000;
  }
}

Шаг 4: отредактируйте файл хостов, в /etc/hosts на Mac, чтобы включить

127.0.0.1   yoursite.dev

Этот файл направляет домены на localhost. Nginx слушает на localhost и перенаправляет, если он соответствует правилу.

Шаг 5. Каждый раз, когда вы используете свою среду разработки dev, вы используете yoursite.dev в адресной строке вместо localhost:3000, чтобы Facebook правильно ввел вас в журнал.

Ответ 9

Вперед - отличный инструмент для поддержки разработки приложений facebook на местном уровне, он поддерживает SSL, поэтому проблема с сертификатом не является проблемой.

https://forwardhq.com/in-use/facebook

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я один из разработчиков

Ответ 10

Вам нужно настроить приложение для запуска https для localhost

Вы можете выполнить шаги, приведенные в этом, для установки HTTPS на ubuntu

https://www.digitalocean.com/community/articles/how-to-create-a-ssl-certificate-on-apache-for-ubuntu-12-04

Вам необходимо выполнить следующие действия:

установить apache (если у вас его нет)

sudo apt-get install apache2

Шаг первый - активируйте модуль SSL

sudo a2enmod ssl
sudo service apache2 restart

Шаг второй - создать новый каталог

sudo mkdir /etc/apache2/ssl

Шаг 3. Создание сертификата с самоподписанным SSL

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache/ssl/apache.key -out /etc/apache2/ssl/apache.crt

С помощью этой команды мы создадим самоподписанный сертификат SSL и ключ сервера, который его защитит, и поместив их в новый каталог. Самая важная строка - "Общее имя". Введите здесь свое официальное доменное имя или, если у вас его еще нет, IP-адрес вашего сайта.

Общее имя (например, полное доменное имя сервера или ваше имя) []: example.com или локальный

Шаг четвертый - установите сертификат

sudo vim /etc/apache2/sites-available/default-ssl

Найдите следующие строки и отредактируйте их с настройками

Имя_сервера localhost или example.com

SSLEngine на SSLCertificateFile/etc/apache2/ssl/apache.crt

SSLCertificateKeyFile/etc/apache2/ssl/apache.key

Шаг пятый - активируйте новый виртуальный хост

sudo a2ensite default-ssl
sudo service apache2 reload

Ответ 11

Трюк:

Используйте MAMPPRO и создайте: имя сервера: EXACT-адрес вашего веб-сайта (например: helloworld.com) на ваш сайт на вашем диске

На Facebook: Таким образом, вы можете сохранить свой оригинальный URL-адрес сайта (например: helloworld.com)

Теперь вы понимаете, что когда вы вводите свой сайт на адресной строке, вы находитесь в локальном! .. и когда вы хотите быть в сети, просто неактивный сервер на MAMP PRO..

:)

Ответ 12

Ни один из ответов выше не работал у меня. Я работаю на FB API 2.5. Мой был комбинацией проблем, которые привели к успеху, когда они были разрешены.

  • Создайте тестовое приложение, чтобы убедиться, что оно поддерживается и управляется как такие и могут быть отключены при переходе на живую.
  • Правильно прочитайте сообщение об ошибке:) - Мне пришлось включить "Вход в систему OAuth" с "Client OAuth Login"
  • Используйте https://www.whatismyip.com/, чтобы узнать, что мое текущий IP-адрес
  • Создайте запись A в моем домене i.e. http://localhost.mydomain.com, который указывает на мой текущий IP

Вероятно, он не идеален для изменения динамического IP-адреса, и, вероятно, можно использовать DynDNS или что-то подобное, чтобы сделать IP более "статическим", но он работал у меня.