Запуск приложения 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
.
Ответ 7
просто укажите свой URL-адрес холста как http://localhost/app_path.
Ответ 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 более "статическим", но он работал у меня.