Запуск приложения Facebook на локальном хосте - PullRequest
92 голосов
/ 27 февраля 2011

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

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

Может кто-нибудь объяснить, как запустить приложение Facebook на localhost?

Ответы [ 13 ]

77 голосов
/ 28 февраля 2011

Я недавно написал об этом учебник .

Наиболее важным пунктом является «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>

И в корневом каталоге вашего локального хоста есть файл test.php:

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

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

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

29 голосов
/ 19 июня 2014

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

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

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

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

23 голосов
/ 05 января 2013

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

Пример

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

7 голосов
/ 28 февраля 2013

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

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

6 голосов
/ 25 августа 2013

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

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

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

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

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

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

2 голосов
/ 08 ноября 2014

Хорошо, я не уверен, что случилось с этими ответами, но я дам вам знать, что сработало для меня, как советовал старший разработчик в моей работе.Я работаю в 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

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

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

2 голосов
/ 28 февраля 2011

просто укажите свой URL-адрес холста как http://localhost/app_path.

1 голос
/ 06 февраля 2013

Forward - отличный инструмент для помощи в разработке приложений для Facebook локально, он поддерживает SSL, так что это не проблема.

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

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

0 голосов
/ 15 апреля 2019

В моем случае проблема заключалась в том, что Chrome блокировал запрос CORS с localhost: 4200 на веб-сайт API Facebook. Запуск Chrome с этим параметром: "YOUR_PATH_TO_CHROME \ Google \ Chrome \ Application \ chrome.exe" работал как шарм при разработке. Даже если локальный хост не добавлен в настройки приложения Facebook.

...