Запуск програми Facebook на localhost


92

Я планую підключитися до чату на Facebook від мого localhost. Мені потрібно буде отримати ключ сеансу від Facebook. Коли я даю URL-адресу сайту як localhost:8080або ip-address:8080вона не працює.

Я читав про налаштування двох програм з двома різними ключами API, одна працює на dev m / c, а інша - на localhost, але я не зовсім зрозуміла.

Хто-небудь може пояснити, як запустити програму Facebook на localhost?


@Kavya Ви намагаєтесь створити настільну програму для спілкування у Facebook?
Searock

так ... я хочу потрапити на сервер facebook з мого m / c ... побачив допис про те саме тут stackoverflow.com/questions/1877913/... я говорю ...
захоплено

@Kavya Якщо ви хочете створити її, ви не згадали мову програмування, якою збираєтесь користуватися?
Searock

2
Я написав про це підручник .
ifaour

5
@xoxoxo Будь ласка, використовуйте правильні знаки пунктуації та орфографії у своєму спілкуванні.
барт

Відповіді:


77

Я написав підручник про це деякий час тому.

Найважливішим моментом є "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 розпізнає мій localhost навіть без IP або порту ??

Я не думаю, що це має якесь відношення до Facebook, я думаю, ще з iframesrc параметр завантажується з боку клієнта, він буде розглядати вашу локальну 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ви побачите вміст вашого файлу localhost!

Ось чому підписки в режимі реального часу та деавторизація зворотних викликів (лише згадуючи) не працюватимуть з URL-адресами localhost! тому що Facebook буде пінгувати (надсилати http-запити) на ці URL-адреси, але очевидно, що сервер Facebook не перекладе ці URL-адреси на вашу!


Здається, я не можу знайти "URL-адресу сайту" жодної ідеї, де / або на якій вкладці вона знаходиться?
user962206 07

це працює для порту 8080? я все ще отримую помилку з URL-адресою сайту: http://localhost:8080/auth/index.htmlа веб-сторінка, яка видає помилку, - це http://localhost:8080/auth/index.htmlі рядок channelurl:channelUrl : '//localhost:8080/auth/channel.html',
necromancer

Я не розумію частину "структури папок". Якщо ви просто входите на свій веб-сайт за допомогою Facebook, щоб завантажити коментарі Facebook на свою сторінку, вам все-таки потрібна така структура полотна?
AlxVallejo

Є кілька інструментів тунелювання, які дозволять вам присвоїти вашому localhost загальнодоступне ім'я та зробити його видимим, щоб Facebook міг повернутися. Я створив одну з назвою PageKite , є й інші.
Bjarni Rúnar

29

якщо ви використовуєте localhost:

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

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

працює для мене.


дякую, я спробував інші рішення, але нарешті це спрацювало,
rahulmishra

у полі URL-адреса сайту я мав: localhost , але не працював. Я також додав localhost до поля App Domain, як ви вже згадували, це чудово працює, дякую
RegarBoy

23

Ви також можете редагувати файл "hosts" і створювати локальні варіанти вашого домену.

Приклад

Якщо ваша реальна адреса програми для facebook - "example.com", ви можете створити домен "localhost.example.com" (доступний лише з вашого ПК) у вашому файлі "hosts", що вказує на "localhost", і запустити свій локальний веб-сайт під цим доменом. Ви можете обдурити Facebook таким чином.


1
працює як шарм, дякую! FYI- хости розташовані на Windows 7 в C:/Windows/System32/drivers/etc/hostsабо на Ubuntu о/etc/hosts
pztrick

Відмінна методологія. Дякую.
Jerad

Що потрібно встановити для доменів додатків та URL-адреси полотна?
Крейг,

Однак це не дозволить вам вказати порт, тому вам доведеться використовувати зворотний проксі-сервер, щоб дозволити розробку в тому ж домені. Див stackoverflow.com/questions/10729034 / ...
MagicLAMP

7

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

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


6

2013 серпня. Facebook не дозволяє встановлювати домен з портом для програми, як приклад "localhost: 3000".

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

Розробники рейок можуть безкоштовно використовувати http://progrium.com/localtunnel/ .

  • Facebook одночасно дозволяє лише один домен для програми. Якщо ви намагаєтеся додати ще один, як localhost, він покаже якусь іншу помилку щодо домену. Обов’язково використовуйте лише один домен для зворотного дзвінка та для налаштування домену програми одночасно.

4

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

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


2

просто вкажіть URL-адресу свого полотна як http: // localhost / app_path .


@ifaour i follwoed ur tutorial .. its givin me error Код помилки API: 191 Опис помилки API: Зазначена URL-адреса не належить програмі Повідомлення про помилку: redirect_uri не належить програмі. Мені це не потрібно, щоб запустити всередину fb ...
захоплено

@Kavya просто додайте URL-адресу canvas як localhost / app_path та відкрийте додаток fb, щоб він запустив вашу програму з localhost. Вибачте пізно, як дуже зайнятий.
JustCoding

Інший спосіб зробити це - зіставити локально URL-адресу вашого веб-сайту / полотна, а не вказувати localhost. Потім ви можете використовувати цільовий домен. Я не впевнений, на якій архітектурі ви розробляєте, але під Windows ви б цього досягли, налаштувавши свій сайт IIS локально з правильними прив'язками, а потім додавши псевдонім до файлу хостів у C: \ Windows \ System32 \ drivers \ тощо наприклад, додавання рядка 127.0.0.1
yourproject.yourdomain.net

2

Добре, я не впевнений, що з цими відповідями, але я дам вам знати, що мені вдалося, як порадив старший розробник моєї роботи. Я працюю в Ruby on Rails і використовую код Facebook для отримання маркерів доступу.

Проблема: Для автентифікації Facebook бере URL-адресу з вашого адресного рядка і порівнює її з тим, що у них є у файлі. Вони не дозволяють використовувати localhost:3000з будь-якої причини. Тим не менш, ви можете використовувати повністю вигадане доменне ім'я, наприклад yoursite.dev, запустивши локальний сервер і вказуючи yoursite.devна 127.0.0.1:3000або туди, куди вказував ваш localhost.

Крок 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 : Відредагуйте файл хостів /etc/hostsна Mac для включення

127.0.0.1   yoursite.dev

Цей файл спрямовує домени до localhost. Nginx прослуховує localhost і переспрямовує, якщо він відповідає правилу.

Крок 5 : Кожного разу, коли ви використовуєте своє середовище розробників, ви використовуєте yoursite.devв адресному рядку замість того, localhost:3000щоб Facebook правильно входив у систему.


1

Forward - це чудовий інструмент для місцевої розробки додатків для facebook, він підтримує SSL, тому річ із сертифікатом не є проблемою.

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

ЗАМОВЛЕННЯ: Я один із розробників


1
І PageKite - один із конкурентів Forward (я це зробив!). ;-)
Bjarni Rúnar

Спробувавши все, що було під сонцем, це спрацювало для мене. Проблема лише в тому, що пересилання справді відбувається повільно. Краще, ніж не отримувати зворотних дзвінків у FB! Дякую
Крейг

0

Вам потрібно налаштувати програму на перебіг 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

0

Фокус:

Використовуйте MAMPPRO і створіть: ім’я сервера: ТОЧНА адреса вашого веб-сайту (наприклад: helloworld.com) до вашого веб-сайту на вашому диску

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

Тепер ви розумієте, що коли ви вводите свій веб-сайт на адресній панелі, ви знаходитесь у місцевій мережі ! ..і коли ви хочете бути в мережі, просто неактивний сервер на MAMP PRO ..

:)


0

Жоден з наведених вище відповідей не спрацював для мене. Я працюю на FB API 2.5. Моє поєднання питань, які призводять до успіху після їх вирішення

  1. Створіть тестовий додаток, щоб гарантувати, що він підтримується та управляється як такий, і його можна відключити під час роботи
  2. Правильно прочитайте повідомлення про помилку :) - Мені довелося ввімкнути "Вхід в Інтернет OAuth" З "Входом OAuth клієнта"
  3. Скористайтеся https://www.whatismyip.com/, щоб дізнатись, який у мене зараз IP
  4. Створити запис A у моєму домені, тобто http://localhost.mydomain.com, який вказує на мою поточну IP-адресу

Це, мабуть, не ідеально, оскільки зміна динамічного IP, і, ймовірно, можна використовувати DynDNS або щось подібне, щоб зробити IP більш статичним, але це спрацювало для мене


0

У моєму випадку проблема виявилася хромованою, що блокує запит CORS від localhost: 4200 на веб-сайт api facebook. Запуск Chrome із таким налаштуванням: "YOUR_PATH_TO_CHROME \ Google \ Chrome \ Application \ chrome.exe" --disable-web-security --user-data-dir = "c: / chrome працював як шарм під час розробки. Навіть без локального хоста додано до налаштувань програми facebook.


чудово працює для місцевої розробки, але у виробництві вам потрібен дозвіл facebook (який отримується за допомогою виклику опції браузера) для обміну даними з facebook
radio_head
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.