Запуск приложения 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. Шахта была комбинацией проблем, которые приводят к успеху после решения

  1. Создайте тестовое приложение, чтобы убедиться, что оно поддерживается и управляется как таковое и может быть отключено при запуске
  2. Правильно прочитайте сообщение об ошибке:) - Я должен был включить "Web OAuth Login" С "Client OAuth Login"
  3. Используйте https://www.whatismyip.com/ чтобы узнать мой текущий IP
  4. Создайте запись A на моем Домене, т.е. http://localhost.mydomain.com/ которая указывает на мой текущий IP

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

Вам нужно настроить приложение для запуска через 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

Шаг третий - Создайте самоподписанный сертификат 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 добавлено в настройки приложения на фейсбуке.

Другие вопросы по тегам