Додаток Facebook: localhost більше не працює як домен програми


94

Я писав гру для Facebook, використовуючи Rails та jQuery. З тих пір, як я почав використовувати Facebook Javascript SDK, використання localhost як домену програми, здавалося, працювало чудово. Я зміг протестувати свою гру як локально, так і на Heroku.

Минулого дня, здається, Facebook зробив велике оновлення для свого інтерфейсу розробника. Тепер, якщо я додаю localhost як домен програми, це видає мені таку помилку:

Це має бути отримано з URL-адреси полотна, захищеної URL-адреси полотна, URL-адреси сайту, URL-адреси мобільного сайту, URL-адреси вкладки сторінки або URL-адреси вкладки захищеної сторінки. Перевірте та виправте такі домени: localhost

Моя гра також тепер не працює локально, і я отримую повідомлення про помилку, коли Javascript SDK входить до користувача:

Код помилки API: 191 Опис помилки API: Вказана URL-адреса не належить програмі Повідомлення про помилку: Недійсний redirect_uri: Дана URL-адреса не дозволена конфігурацією програми.

Це не трапляється, коли я розгортаю свою гру, оскільки herokuapp.com вважається дійсним доменом програми.

Як я повинен розробляти та тестувати свою гру, якщо я більше не можу використовувати localhost або 127.0.0.1?


Які значення ви маєте для URL-адреси полотна, URL-адреси захищеного полотна, URL-адреси сайту, URL-адреси мобільного сайту, URL-адреси вкладки сторінки або URL-адреси вкладки захищеної сторінки?
Igy

2
привіт хлопці, я зрозумів, вам потрібно створити нову "тестову програму", вони повинні
змислити

@LouisGrellet, Ну, я отримую "Домени верхнього рівня заборонені". Як ви вже сказали, f ***** g
Абхіджіт Саркар

1
"У розділі Налаштування клієнта oAuth, де сказано Використовувати строгий режим для перенаправлення URI, переконайтеся, що для нього встановлено значення Ні, а збереження звернення." - wp-native-articles.com/blog/news/…
eflat

Відповіді:


241

Здається, протокол постійно змінюється, і прийнята відповідь сьогодні для мене не спрацювала. Якщо це допоможе іншим шукачам, ось що мені вдалося:

  • Усі зміни були внесені на сторінці Налаштування на вкладці Основні

1.) У центрі під першим полем параметрів натисніть "+ Додати платформу" та виберіть "Веб-сайт" (або будь-який інший варіант, який підходить для вашого додатка.)

2.) У вікні веб-сайту, який ви щойно додали: URL-адреса сайту: http://localhost:3000/

3.) У полі вище (Налаштування => Основне): Домен програми: localhost

4.) У нижньому правому куті натисніть "Зберегти зміни"

5.) Переконайтеся, що ідентифікатор програми скопійовано та вставлено правильно у ваш код. (Ідентифікатор знаходиться в першому полі на цій сторінці, якщо він вам знадобиться знову.)


1
Дякуємо за оновлення відповіді. Справді, схоже, оригінальна відповідь більше не працює (все-таки дякую за оригінальні відповіді Каміло та rareclass). Шкода, що Facebook ніколи, здається, не оголошує про ці зміни.
Равенстін,

1
Facebook, мабуть, нещодавно виправив це для роботи, localhostоскільки це раніше не працювало раніше. Дякую за хорошу відповідь.
dbasch

25
Зверніть увагу, що ваша URL-адреса також повинна бути в списку Налаштування> Додатково> Дійсні URI- адреси перенаправлення OAuth .
Кара Брайтвелл

3
Здається, це вже не працює :( Я отримую URL-адресу заблоковано: це переспрямування не вдалося, оскільки URI перенаправлення не внесено до білого списку в налаштуваннях клієнтського OAuth програми. Переконайтеся, що ввійшли клієнтський і веб-OAuth-вхід та додайте всі домени додатків як дійсний OAuth Перенаправлення URI.
Марія Інес Парнісарі,

3
Вам більше не дозволяється використовувати "http". Це має бути "https".
iJames

31
  1. Перейдіть на сторінку налаштувань програми на веб- сайті http://developers.facebook.com
  2. Клацніть на стрілку спадного меню у верхньому лівому куті (поруч із назвою вашого додатка), натисніть "Створити тестовий додаток" і дайте йому назву
  3. У налаштуваннях> Основні для цього нового тестового додатка встановіть домени додатків як "localhost"
  4. Також встановіть URL-адресу веб-сайту як " http: // localhost: 8888 " (або будь-який інший порт, який ви використовуєте).
  5. ВАЖЛИВО: ця програма відрізняється від ідентифікатора програми та секрету програми від вашої онлайн-програми. Отже, останній крок: переконайтеся, що ви оновили код, який знаходиться у вашому локальному хості, за допомогою ідентифікатора програми та секрету програми. Навпаки, код, який знаходиться на реальному сервері, повинен використовувати основний ідентифікатор програми та секрет.

Найбільш розумне / сучасне рішення порівняно зі спробою налаштувати свій обліковий запис прод для роботи з розробником.
Карл Едвардс,

13

Ви все ще можете протестувати свою програму, не розгортаючи її на віддаленому сервері, як heroku. Фокус полягає в тому, щоб оновити etc/hostsфайл таким чином:

127.0.0.1 mydomain.com

Потім у налаштуваннях програми Facebook введіть [ http: //] mydomain.com, без знаків "[" та "]"

У мене це працювало таким чином


Це не спрацює, якщо ви використовуєте нестандартний порт, що зазвичай роблять люди, якщо вони паралельно розробляють багато додатків.
mgol

1
Це буде працювати, я використовував python -m SimpleHTTPServer для обслуговування на порту 8000 та example.com:8000/test-facebook.html , за умови очікуваного результату. Я припускаю, що ви зареєстрували 127.0.0.1 example.com у / etc / hosts
Патрік,

Добре знати! Тож вони, здається, ігнорують порт тоді, дивно.
mgol

9

Для всіх, хто возиться з цим у 2017 році. Інтерфейс знову змінився. Я хотів прокоментувати це до відповіді, але у мене недостатньо репутації. URL-адресу localhost вашого додатка тепер потрібно скопіювати у три місця. В даний час (26 жовтня 2017 р.) Послідовність:

1.) Натисніть "Налаштування" в меню ліворуч.

2.) У центрі під першим полем параметрів натисніть "+ Додати платформу" та виберіть "Веб-сайт" (або будь-який інший варіант, який підходить для вашого додатка.)

3.) У вікні, яке з’явиться для веб-сайту, ви щойно додали, скопіюйте URL-адресу свого сайту localhost (fe http: // localhost: 3000 / )

4.) У полі вище, що "App Domain" скопіюйте ту саму URL-адресу

5.) У нижньому правому куті натисніть "Зберегти зміни"

6.) У меню ліворуч у розділі "Продукти" натисніть "Вхід на Facebook" (або додайте його за допомогою "+ Додати товари", якщо він недоступний)

7.) Ви знаходитесь у налаштуваннях Facebook Login. Скопіюйте ту саму URL-адресу в поле "Дійсні URI-адреси перенаправлення OAuth"

Це має спрацювати.


2
Зверніть увагу, що Facebook більше не дозволяє "http" для дійсних URI
адрес

5

Просто додайте localhost як URL-адресу свого полотна або URL-адресу мобільного сайту, це дозволить вам мати як localhost, так і herokuapp.com у налаштуваннях домену програми. Тоді, коли ваша програма запущена, просто видаліть її.


5

Це неправильний шлях. Ви повинні створити тестовий додаток за допомогою вкладки Тест у налаштуваннях програми. А потім ви можете ввести URL-адресу свого етапу розробки (наприклад, localhost) до своєї програми.


1
я створив тестовий додаток, але він не працював. Більше деталей?
Роджер Гаджрай

Так, я вважаю , що це правильний шлях, побачити повні інструкції stackoverflow.com/a/38173031/3625739
Георгіос

5

Рішення за допомогою Firebase

Для того, щоб це працювало localhost, порт 3000я зробив наступне:

  1. Створити додаток

Створіть тестовий додаток

  1. Тепер виберіть "+ Створити тестову програму" зі спадного меню зі стрілкою (угорі ліворуч).

введіть тут опис зображення

  1. Додати localhostдо доменів додатків

введіть тут опис зображення

  1. Додайте http://localhost:3000/до URL-адреси сайту, вибравши "+ Додати платформу"

введіть тут опис зображення

До цього моменту я дотримувався всіх попередніх відповідей, поданих тут, але нічого не працювало.

Так...

  1. У меню ліворуч виберіть "Додати товар"

  2. Додати "Facebook Login"

Вам буде представлена ​​карусель робочого циклу, із типовим доменом http://localhost:3000/, натисніть "продовжити" до кінця.

  1. Виберіть "Вхід у Facebook> Налаштування" в меню продукту.

  2. Введіть ваш URI переспрямування Firebase OAuth (знайдено, коли ввімкнути Facebook Login у вашій консолі Firebase https://console.firebase.google.com , приклад нижче)

введіть тут опис зображення

  1. Вставте URI та збережіть.

введіть тут опис зображення

Зроблено.


2

Спробуйте використовувати URL-адресу з портом, наприклад

    http://localhost:8000/

У мене була та сама проблема, і я знайшов це рішення прямо зараз.


1
Вам потрібно додати "Додаток на Facebook" як платформу та додати localhost: 8000 у URL-адресу Canvas
Tachun Lin

1

Це працює для мене в героку, річ localhost не працювала (для мене). Сподіваюся, це допоможе

1.) У центрі під першим полем параметрів натисніть "+ Додати платформу" та виберіть "Веб-сайт" (або будь-який інший варіант, який підходить для вашого додатка.)

2.) У вікні веб-сайту, який ви щойно додали: URL-адреса веб-сайту: http://MYAPP.herokuapp.com/ (замініть MYAPP на ім’я вашого додатка)

3.) У полі вище (Налаштування => Основне): Домен програми: MYAPP.herokuapp.com (замініть MYAPP на ім'я вашого додатка)

4.) У нижньому правому куті натисніть "Зберегти зміни"


1

Просто примітка для деяких інших, які, можливо, борються з цим, як і я. Мені не вдалося змусити це працювати з "тестовими" програмами. Використовуючи мої фактичні налаштування програми (і просто додаючи

"http://localhost:3000/"

to my canvas URL) працював, як пропонували всі інші. Здається, тестові програми не є рівними реальним програмам.


1

Я зіткнувся з проблемою з моїм додатком Rails, яку я зазвичай запускаю з http: // localhost: 3000, оскільки Facebook тепер вимагає дійсного перенаправлення OAuth для використання https.

Для локального використання https я використовував [ngrok] [1], що дозволяє використовувати https, надаючи тунель. Зробити це:

  1. Я зайшов на їх веб-сайт і завантажив їх програму
  2. Я витягнув файл для програми
  3. У своїй консолі я зайшов у каталог, куди було витягнуто ngrok, і на моїй машині Windows ввів 'grok http 3000', інші можуть використовувати './grok http 3000'
  4. Ввівши це, ngrok надав https-адресу, яку я вставив у поле Valid OAuth Redirect URIs у Facebook
  5. Потім я запустив свій сервер і мав доступ до нього, використовуючи адресу https замість localhost: 3000

1

для локального тестування потрібно лише вимкнути програму або перевести програму facebook у режим розробки. Тоді Facebook дозволить вам самостійно отримати доступ до програми


0

Для мене це працювало так:

Налаштування інформаційної панелі програми facebook:

* На вкладці 'basic':

1) Залишити домен програми порожнім.

2) Стирання будь-якої платформи. Значення: немає веб-сайту, немає платформи для полотна. (тому немає поля для URL-адреси сайту, яке потрібно заповнити)

* На вкладці "Додатково":

3) Я ввів дійсні URI переспрямування OAuth:

http://localhost/myappfolder/redirect.php

4) щодо мого коду, введіть мій c: /xampp/htdocs/localhost/myappfolder/index.php (цей файл робить URL-адресу для входу):

$helper = new FacebookRedirectLoginHelper('http://localhost/myappfolder/redirect.php');  

всередині файлу redirect.php:

$helper = new FacebookRedirectLoginHelper('http://localhost/myappfolder/redirect.php');  

і я отримав сеанс! нарешті! не треба вішатись врешті-решт: P

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