Запуск приложения Facebook на локальном хосте
Я планирую подключиться к чату Facebook с моего локального хоста. Мне нужно будет получить сессионный ключ от Facebook. Когда я даю URL сайта как localhost:8080
или же ip-address:8080
это не работает.
Я читал о настройке двух приложений с двумя разными API-ключами, одно из которых работает на dev m/c, а другое на localhost, но я не совсем понял.
Кто-нибудь может объяснить, как запустить приложение Facebook на localhost?
12 ответов
Я написал учебник об этом некоторое время назад.
Наиболее важным моментом является "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
РЕДАКТИРОВАТЬ:
Кавья: как FB-сервер распознает мой локальный хост даже без IP-адреса или порта?
Я не думаю, что это имеет какое-либо отношение к Facebook, я думаю, с момента iframe src
Параметр загружается со стороны клиента, он будет обрабатывать ваш локальный URL, как если бы вы поместили его прямо в браузер.
Например, есть файл на вашем онлайн-сервере с содержанием (например, online.php
):
<iframe src="http://localhost/test.php" width="100%" height="100%">
<p>Not supported!</p>
</iframe>
И на вашем локальном корневом каталоге, есть файл test.php
:
<?php echo "Hello from Localhost!"; ?>
Сейчас посещаю http://your_domain.com/online.php
вы увидите содержимое вашего локального файла!
Вот почему подписки в реальном времени и деавторизация обратных вызовов (просто упоминать) не будут работать с локальными URL-адресами! потому что Facebook будет пинговать (отправлять http-запросы) на эти URL-адреса, но, очевидно, сервер Facebook не будет переводить эти URL-адреса на ваш!
Если вы используете localhost:
в Facebook-> Настройки -> Основные, в поле "Домены приложений" напишите "localhost", затем нажмите "+ Добавить платформу", выберите "Веб-сайт",
он создаст два поля "URL-адрес мобильного сайта" и "URL-адрес сайта", в поле "URL-адрес сайта" снова введите "localhost".
работает для меня.
Вы также можете отредактировать файл 'hosts' и создать локальный вариант вашего домена.
пример
Если ваш реальный адрес приложения Facebook - "example.com", вы можете создать домен "localhost.example.com" (доступный только с вашего компьютера) в файле "hosts", указывающем на "localhost", и запустить свой локальный веб-сайт в этом домене. Вы можете обмануть Facebook таким образом.
В основных настройках вашего приложения ( https://developers.facebook.com/apps) в разделе "Настройки" -> "Основные" -> выберите способ интеграции приложения с Facebook...
Используйте "URL сайта:" и "URL мобильного сайта:" для хранения ваших рабочих и разработанных URL. Оба сайта будут авторизованы. Я просто использую Facebook для аутентификации, поэтому мне не нужны никакие функции перенаправления мобильного сайта. Обычно я изменяю "URL мобильного сайта:" на свой сайт "localhost:12345", когда проверяю аутентификацию, а затем возвращаю его в нормальное состояние после завершения.
2013 август. Facebook не позволяет устанавливать домен с портом для приложения, например, "localhost:3000".
Таким образом, вы можете использовать https://pagekite.net/ для туннелирования localhost:port
в соответствующий домен.
Разработчики Rails могут использовать http://progrium.com/localtunnel/ бесплатно.
- Facebook разрешает использовать только один домен для приложения одновременно. Если вы пытаетесь добавить еще один, как localhost, он покажет какую-то другую ошибку о домене. Обязательно используйте только один домен для обратного вызова и для настройки домена приложения в данный момент.
Так что я получил это на работу сегодня. Мой URL http://localhost:8888
, Домен, который я дал Facebook, является localhost. Я думал, что это не работает, потому что я пытался получить данные, используя FB.api
метод. Я продолжал получать "неопределенное" имя и изображение без источника, поэтому определенно не имел доступа к Графику.
Позже я понял, что моя проблема была в том, что я передавал только первый аргумент /me
в FB.api
и у меня не было токена. Так что вам нужно будет использовать FB.getLoginStatus
функция для получения токена, который должен быть добавлен к /me
аргумент.
Просто укажите свой URL-адрес холста как http://localhost/app_path.
Хорошо, я не уверен, что с этими ответами, но я дам вам знать, что сработало для меня, как советовал старший разработчик в моей работе. Я работаю в 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
к. В моем случае это была замена 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: отредактируйте файл hosts в /etc/hosts
на Mac, чтобы включить
127.0.0.1 yoursite.dev
Этот файл направляет домены на localhost. Nginx прослушивает localhost и перенаправляет, если это соответствует правилу.
Шаг 5: Каждый раз, когда вы используете свою среду разработки, вы используете yoursite.dev
в адресной строке вместо localhost:3000
таким образом, Facebook регистрирует вас правильно.
Forward - отличный инструмент для помощи в разработке приложений для Facebook локально, он поддерживает SSL, так что это не проблема.
https://forwardhq.com/in-use/facebook
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я один из разработчиков
Трюк:
Используйте MAMPPRO и создайте: имя сервера: ТОЧНЫЙ адрес вашего сайта (например, helloworld.com) на ваш сайт на вашем диске
На Facebook: так что вы можете сохранить исходный URL сайта (например, helloworld.com)
Теперь вы понимаете, что когда вы вводите свой веб-сайт в адресной строке, вы находитесь на местном уровне!... и когда вы хотите быть в сети, просто неактивен сервер на MAMP PRO..
:)
Ни один из ответов выше не работал для меня. Я работаю на FB API 2.5. Шахта была комбинацией проблем, которые приводят к успеху после решения
- Создайте тестовое приложение, чтобы убедиться, что оно поддерживается и управляется как таковое и может быть отключено при запуске
- Правильно прочитайте сообщение об ошибке:) - Я должен был включить "Web OAuth Login" С "Client OAuth Login"
- Используйте https://www.whatismyip.com/ чтобы узнать мой текущий IP
- Создайте запись A на моем Домене, т.е. http://localhost.mydomain.com/ которая указывает на мой текущий IP
Это, вероятно, не идеально, как изменение динамического IP, и можно было бы использовать DynDNS или что-то подобное, чтобы сделать IP более "статичным", но это работало для меня
Вам нужно настроить приложение для запуска через https для localhost
Вы можете следовать инструкциям, приведенным в этом разделе, чтобы настроить HTTPS в Ubuntu.
Вам нужно сделать следующие шаги:
установить apache (если у вас его нет)
sudo apt-get install apache2
Шаг первый - активируйте модуль SSL
sudo a2enmod ssl
sudo service apache2 restart
Шаг второй - создайте новый каталог
sudo mkdir /etc/apache2/ssl
Шаг третий - Создайте самоподписанный сертификат 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 или localhost
Шаг четвертый - настройка сертификата
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
В моем случае проблема заключалась в том, что Chrome блокировал запрос CORS с localhost:4200 на веб-сайт Facebook API. Запуск Chrome с этим параметром: "YOUR_PATH_TO_CHROME\Google\Chrome\Application\chrome.exe" --disable-web-security --user-data-dir="c:/chrome работал как чудо при разработке. Даже без localhost добавлено в настройки приложения на фейсбуке.