Facebook OAuth «Домен этого URL не входит в домен приложения»


249

Позвольте мне начать с того, что я уже давно ищу ответ на этот вопрос ...

Я пытаюсь настроить OAuth Facebook для работы с моим приложением, которое разрабатывается локально на моей машине. Все работало идеально с авторизацией Facebook, пока я не перешел с localhostдругого доменного имени (все еще локального на мой компьютер). Теперь я получаю следующую ошибку.

Невозможно загрузить URL: домен этого URL не включен в домены приложения. Чтобы иметь возможность загрузить этот URL, добавьте все домены и субдомены вашего приложения в поле «Домены приложения» в настройках приложения.

Мой файл hosts содержит 127.0.0.1 photovote.dev (работает отлично)

Мой редирект в моем приложении (используя Socialite) http://photovote.dev/auth/facebook/callback

В моих настройках приложения Facebook ...

  • мой домен приложения photovote.dev
  • URL моего сайта http://photovote.dev/
  • мои действительные URI перенаправления OAuth http://photovote.dev/auth/facebook/callback

URL на момент сообщения об ошибке ..

https://www.facebook.com/v2.5/dialog/oauth?client_id=XXXXXXXXXXXXXXX&redirect_uri=http%3A%2F%2Fphotovote.dev%2Fauth%2Ffacebook%2Fcallback&scope=email&response_type=code&state=0ztcKhmWwFLtj72TWE8uOKTcf65JmePtG95MZLDD

Я в недоумении, в чем проблема ...

Снимок экрана 1
Скриншот

Снимок экрана 2 введите описание изображения здесь


3
Привет Данжел, ты можешь захотеть запутать свой FB client_id из этого поста
a.benain

@Dangel, как вы решили эту проблему? У меня такая же проблема, но я не могу ее решить.
Гимир,

@Ghimire, в моей ситуации я изменил URL и не обновил свой client \ secret. Из приведенных ниже решений видно, что на самом деле могут быть разные причины, приводящие к одной и той же ошибке.
Дангель

@dangel проверь это. stackoverflow.com/questions/46626914/…
Гимир,

Ответы:


82

Обычно это происходит, если вы ввели неверные данные при создании приложения в Facebook. Или вы изменили URL-адрес существующего приложения?

Можете ли вы перепроверить настройки вашего приложения на этой странице?

https://developers.facebook.com/apps

  1. Выберите правильное приложение и нажмите кнопку редактирования;

  2. Убедитесь, что URL-адреса и пути правильно введены и указывают на сайт, где вы установили плагин Ultimate для Facebook.


3
Я только что увидел, что вы сказали о том, что «вы изменили URL существующего приложения», именно это и произошло, и я предполагаю, что это привело к созданию нового идентификатора клиента \ секретного
кода

Привет, я также пытаюсь реализовать FB oauth в моем приложении. Я дал все подробности о приложении FB. Но следующая ошибка появится при перенаправлении обратного вызова. InternalOAuthError: Не удалось получить токен доступа в Strategy.OAuth2Strategy._createOAuthError (D: \ node_tutorials \ fb \ node_modules \ passport-oauth2 \ lib \ Strategy.js: 370: 17) в D: \ node_tutorials \ fb \ node_modules \ passport-oa \ lib \ strategy.js: 166: 45 в D: \ node_tutorials \ fb \ node_modules \ oauth \ lib \ oauth2.js: 177: 18
Ананд

Еще одна попытка, которая сработала для меня: попробуйте переключить ваши обратные вызовы с https на http. Это включает в себя как изменение кода, вызывающего getLoginUrl (), так и изменение URL-адресов обратного вызова в настройках приложения. По некоторым причинам, обратные вызовы никогда не работали с HTTPS, несмотря на то, что сайт использовал HTTPS.
Josh1billion

У меня та же проблема, но при открытии страницы локально; Я добавил 127.0.0.1:8000 к авторизованным адресам, так как именно так настроена моя установка easyphp, но она все равно не работает. Могу ли я тестировать только сценарии FB онлайн?!?
Jumpjack

"нажмите на кнопку редактирования" ммм, какая это кнопка?
Александр Миллс

210

В случае, если кто-то сталкивается с этим и ищет эти настройки (как я был)

Ты должен

  1. С левой стороны, нажмите «+ Добавить продукт» и выберите «Facebook Login» (это было вверху для меня)
  2. Смотрите новые настройки, доступные на левой стороне
  3. Теперь у вас будут эти настройки OAuth в разделе «Настройки продукта»

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

Дополнительная информация: Обязательно добавьте URL обратного вызова, как http://localhost:3000в Valid OAuth redirect URIsполе на странице настроек входа в Facebook.


22
Это не то, к чему относится сообщение об ошибке. Существует конкретное сообщение об ошибке относительно допустимых URI перенаправления OAuth , что не происходит здесь. Сообщение четко относится к настройкам »Основные» Домены приложений. Однако проблема заключается в том, что даже при заполнении правильных доменов сообщение об ошибке по-прежнему отображается.
fritzmg

@HakamFostok городской словарь в стороне, математика царит в более высоком порядке по смыслу LHS / RHS en.wikipedia.org/wiki/Sides_of_an_equation , особенно в мире кодирования.
Крейг Лэмби

9
Это исправило это для меня. Несмотря на то, что домен был заполнен правильно, я не добавил URL перенаправления. Добавление URL перенаправления устранило проблему. Похоже, в данный момент FB отправляет неверное сообщение об ошибке для этой проблемы.
Ричард Гарсайд

я работаю локально, и это мой URL 127.0.0.1/CM/public, каким должен быть мой действительный URI перенаправления OAuth?
Юсеф Будайя

1
Это работало для меня в API v2.7, и комментарий @ RichardGarside является точным. У меня не было задано значение для, Valid OAuth Redirect URIsи добавление этого значения поля устранило ошибочное сообщение об ошибке FB, касающееся обновления вашего App Domains.
Johnsampson

60

У меня такая же проблема. Я решил это, добавив мой URI перенаправления OAuth в качестве аргумента в вызов функции getAccessToken:

$redirectLoginHelper->getAccessToken("https://www.example.com/myfacebookcallback")

Если в эту функцию не передается аргумент, SDK самостоятельно генерирует URI перенаправления, который должен работать, но в моем случае это не сработало.

Надеюсь, это кому-нибудь поможет.


2
Это единственный способ заставить его работать после перемещения моего сайта с http на https. Даже после изменения всех доменов в настройках Facebook Api он просто не будет работать.
Крис

6
Это должен быть принятый ответ. Решает проблему!
Торуто

В моем случае сам URL не должен содержать пустых параметров. Когда я предоставляю «www.example.com?param» для getAccessToken, FB всегда говорил, что он не совпадает с URI, который я дал getLoginUrl, что, я уверен, точно такое же. Использование "www.example.com" не вызывает такой ошибки.
Chlind

2
Спасибо . решено этим - очень плохо от Facebook, потому что все эти ошибки абстрактны / неоднозначны, и вы не знаете, где тоже искать
digitalzoomstudio

Это отвечает на вопрос.
Джон

35

Убедитесь, что ваше приложение общедоступно. Нажмите + Добавить продукт. Теперь перейдите к продуктам => Facebook Войти Теперь сделайте следующее:

Действительные URI перенаправления OAuth: example.com/

Деавторизовать URL обратного вызова: https://example.com/facebookapp http://unicodeitsolutions.com/


1
Для чего Deauthorize Callback URL : https://example.com/facebookappнужно? Будет ли это работать без этого?
Иордания

Деавторизовать URL обратного вызова не обязательно ... когда пользователь деавторизует наше приложение, Facebook будет пинговать нас по URL.
Санджой Канрар

20

Вот что я сделал, чтобы решить эту проблему: введите описание изображения здесь

В принципе:

1) Включите « Вход OAuth встроенного браузера »

2) Отключите « Использовать строгий режим для URI перенаправления » и введите URI перенаправления, как я это сделал.

3) Оставьте все остальные варианты как есть.

4) Сохраните ваши изменения.

5) Наслаждайтесь :)


Это решило это для меня. Я не хотел публиковать свое приложение, потому что я только делал учебник и тестировал его локально. Спасибо @bangbang
PHBeagle

1
Для меня использование строгого режима для URI перенаправления не может быть отключено.
fdehanne

8

У меня была такая же проблема, и она возникла из-за неверного идентификатора клиента client_id / Facebook.

Переключили ли вы свое приложение Facebook на «общедоступное» или «онлайн»? При этом Facebook создает новое приложение с новым идентификатором приложения.

Вы можете сравнить значение параметра "client_id" в URL-адресе с значением на панели инструментов Facebook.


Все, что я сделал, это изменил домен и URL сайта, чтобы они соответствовали с localhost на photovote.dev. Я обновил URI перенаправления в своем приложении, а также в настройках Facebook. Я мог бы просто попытаться создать новое приложение
Dangel

хм, наверное, я изменил что-то в настройках приложения, что привело к созданию нового идентификатора, потому что вы правы, он больше не соответствует. Возможно, когда я обновил URL сайта? несмотря на то, что он снова работает
Dangel

Это сработало для меня. Использовал старый идентификатор приложения в производстве.
Маркус В.

8

Как я это исправил: я пошел в текстовое поле UID OAuth Redirect URIs и установил точный URL, а не только домен :

перед: https://my-website.com

после: https://my-website.com/facebookoauth/facebooklogin

(URL может отличаться в вашем случае, проверьте его в адресной строке браузера).

Это было вызвано параметром Использовать строгий режим для URI перенаправления, который был заблокирован в положении Да.


Большое спасибо за это. Это исправило мою проблему
Викрис

7

Невозможно загрузить URL: домен этого URL не включен в домены приложения. Чтобы иметь возможность загрузить этот URL, добавьте все домены и субдомены вашего приложения в поле «Домены приложения» в настройках приложения.

У меня была эта проблема сегодня, я нахожу документацию Facebook и SDK неуважительным и благородным по отношению к другим разработчикам, чтобы не сказать больше.

Помимо того, что «домены приложений» расположены в двух разных местах без особой информации (3, если вы добавляете «веб-платформу»), вам также нужно перейти в приложение products / facebook login / settings и добавить URL-адрес перенаправления в Valid OAuth Redirect URIs.

Ошибка ничего не говорит о настройках oauth.


1
Да, я должен был сделать этот дополнительный шаг тоже. Я разделяю ваши взгляды на документацию!
Магнус Смит

6

По состоянию на 2017-10 гг.

Решение, которое решило мою проблему.

В настоящее время этот FB преподносит этот сюрприз.

... Настройки OAuth клиента приложения. Убедитесь, что Client и Web OAuth Login включены ...

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

Настройки для настройки находятся здесь https://developers.facebook.com/apps/[your_app_itentifier]/fb-login/ .

Конечный слеш важен. Они должны совпадать в коде вашего приложения и в настройках администратора FB. Так что это конфиг где-то в вашем коде (см. Ниже, как получить любое доменное имя для приложения dev):

{
    callbackURL: `http://my_local_app.com:3000/callback/`, // trailing slash
}

и тут

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

Чтобы получить любое доменное имя для приложения на локальном компьютере с Windows, отредактируйте hostфайл. Пользовательские имена хороши для того , чтобы избавиться от всех тех localhost:8080, 0.0.0.0:30303, 127.0.0.0:8000, и так далее. Потому что некоторые сторонние сервисы, такие как FB, иногда не позволяют использовать 127.0.0.0имена.

На Windows 10 hostsфайл находится здесь:

C:\Windows\System32\drivers\etc\hosts

Резервное копирование исходного файла, создание копии с другим именем (не работает в родной CMD Windows. Я использую Git для Windows , у него много команд Unix)

$ cp hosts hosts.bak

Добавьте это в hosts

127.0.0.1  myfbapp.com # you can access it in a browser http://myfbapp.com:3000
127.0.0.1  www.myotherapp.io # In a browser http://www.myotherapp.io:2020

:3000Например, чтобы избавиться от части порта, настройте NGINX.


Спасибо за это, понятия не имел, что косая черта необходима!
Энди Холмс

11 мая 2018 года URL-адрес обратного вызова для приложений и действительные URI перенаправления oauth на Facebook должны совпадать. и https должен хотя.
Юда Prawira

Конечный слэш экономит мое время. Спасибо!
HyoJin KIM


6

В большинстве случаев это происходит при неправильной вставке правильного URL-адреса перенаправления OAuth в раздел продукта панели управления FB. Я предлагаю выполнить следующие шаги

01. Проверьте основные настройки приложения в порядке с изображением ниже с вами

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

02. проверьте, есть ли у вас добавить продукт

Если нет, то вы можете легко добавить продукт в систему, нажав + синус, как показано ниже.

Если да, то попал внутрь настройки продукта. введите описание изображения здесь

03. Проверьте, предоставили ли вы действительный URL-адрес перенаправления OAuth.

Это просто означает, что должно быть после входа в систему. Это не что иное, как ваш обратный вызов URl. Вы можете видеть на моей картинке ниже, я добавил несколько URL перенаправления. введите описание изображения здесь

  1. Возникли проблемы ... Смотрите мое видео--> https://www.youtube.com/watch?v=mdhubrzV5y8&t=3s

2-летний вопрос, и ссылки на внешние сайты не должны быть основным содержанием ответа.
zzxyz

6

Facebook недавно отключил кнопку переключения « Использовать строгий режим для URI перенаправления », поэтому вам нужно добавить точный URI, который вызывается при нажатии кнопки входа. Для моего случая это было так, как показано на скриншоте. Это решило проблему для меня :)

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



5

В моем случае мне нужно было только включить OAuth-вход во встроенный браузер.

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


Я также использовал логин на основе браузера, поэтому с той же проблемой я столкнулся. Также есть поле ввода ниже, где я должен был поместить свой точный URI перенаправления.
Абсин

4

У меня ничего не получалось, пока я не обновил версию SDK, которую использовал. Я начал с 5.0. Даже 5.4.0 не будет работать. Когда я обновился до 5.6.2, он работал безупречно, несмотря на то, что в журналах изменений ничего не было актуально!


1
У меня точно была эта проблема! Я использовал «5.4.2» и обновился до «5.6.2»
Джон Смит

2

Эта опция должна быть включена в портале:

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


Спасибо. У меня была та же проблема, и это был переключатель, который я пропустил.
время

Спасибо! Это также сработало для меня (я использовал Google Firebase. Мне также пришлось установить «Действительные URI перенаправления OAuth» на URI перенаправления OAuth, данный мне google для моего проекта.)
mwang25

2

В случае, если это кому-нибудь еще поможет, это стало происходить для меня на старом сайте, когда «Valid OAuth Redirect URIs» стал обязательным. Сайт все еще использовал V4 PHP SDK, и проблема была решена для меня путем обновления до V5 SDK.


1

В разделе «Домен приложения» вы пишете домен своего приложения, но вам также необходимо добавить свой домен для входа, то есть имя html-страницы, где вы просите пользователя войти в систему. В моем случае я тестировал его на локальном хосте, и маршрут входа был localhost / login. Если я только поместил http://localhost.com в раздел домена приложения, я получаю эту ошибку. Но после добавления http: //localhost/login.com ошибка была исправлена. а также изменились настройки приложения в более новой версии SDK, в которой нет опции для маршрута перенаправления OAuth. Вы должны назначить маршрут перенаправления непосредственно со стороны сервера после успешного получения токена OAuth.


1

Это сработало для меня:

Вот главное, что нужно понять: Facebook всегда будет проверять домен WWW . Поэтому сначала убедитесь, что www.your_domain.dev работает в вашем браузере.

Возможно, если у вас есть несколько виртуальных хостов на локальном сервере, некоторые другие виртуальные хосты переопределяют « www.your_domain.dev ». Поэтому, пожалуйста, проверьте это. Apache выберет ПЕРВОЕ определение домена (или портов, или что-то в этих терминах - я не эксперт в этом, но учился на ошибках). Простое быстрое решение проблемы переопределения виртуального хоста - поместить « определение виртуального хоста www.your_domain.dev в самый верх файла« httpd-vhosts.conf ».

Перейдите в « /apache/conf/https-vhosts.conf » и поместите его в самый верх файла:

<VirtualHost *:80>
<Directory "C:/your_app_folder_path/">
    Options FollowSymLinks Indexes
    AllowOverride All
    Order deny,allow
    allow from All
</Directory>
ServerName your_domain.dev
ServerAlias your_domain.dev
DocumentRoot "C:/your_app_folder_path/"
</VirtualHost>

###### FOR SSL #####
<VirtualHost *:443>
    DocumentRoot "C:/your_app_folder_path/"
    ServerName your_domain.dev
    ServerAlias www.your_domain.dev
    SSLEngine on
    SSLCertificateFile "conf/ssl.crt/server.crt"
    SSLCertificateKeyFile "conf/ssl.key/server.key"
    <Directory "C:/your_app_folder_path/">
        Options All
        AllowOverride All
        Require all granted 
    </Directory>
</VirtualHost>

Далее: Если вы используете систему Windows, отредактируйте файл «hosts» в «C: \ Windows \ System32 \ drivers \ etc», добавив две строки:

127.0.0.1 your_domain.dev
127.0.0.1 www.your_domain.dev

Далее: перезагрузите сервер Apache, и все должно работать.


Я надеюсь, что это поможет вам и сэкономит ваше время. Я тратил почти весь день на поиски в интернете, вырывал волосы и не мог найти ничего полезного, пока не нашел это.


1

У меня была такая же проблема ..... проблема в версии PHP SDK 5.6.2 и исправление редактировало следующий файл:

facebook\src\Facebook\Helpers\FacebookRedirectLoginHelper.php

изменить эту строку

$redirectUrl = FacebookUrlManipulator::removeParamsFromUrl($redirectUrl,['state','code']);

в

$redirectUrl = FacebookUrlManipulator::removeParamsFromUrl($redirectUrl,['state','code','enforce_https']);


0

Та же самая ошибка Facebook произошла со мной в производственной среде. Причина была в том, что у меня было 2 приложения, зарегистрированных в Facebook (Local, Production), но я жестко закодировал локальный идентификатор приложения в исходный код и забыл переключить его на идентификатор производственного приложения перед развертыванием.

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


0

Используя мой собственный локальный сервер.

Просто добавив http://localhost/my-siteв качестве URL в:

https://developers.facebook.com/apps/YOUR-APP-ID/fb-login/

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


0

Проблема и ответы постоянно меняются, поскольку FB ужесточает процедуру входа в систему. Сегодня я начал получать это ужасное сообщение «Домен этого URL-адреса не включен в домены приложения. Чтобы иметь возможность загрузить этот URL-адрес, добавьте все домены и дочерние домены вашего приложения в поле« Домены приложения »в настройках приложения».

Ответ был: теперь FB хочет полный URI перенаправления. Так что для меня, где раньше он был просто https://www.example.com, теперь он хочет https://www.example.com/auth/facebook/callback . Это нужно сделать в поле «Действительные URI перенаправления OAuth» (настройка для разработчиков / входа в Facebook ->)


0

Вход в Facebook -> Настройки -> Действительные URI перенаправления OAuth -> вставьте домены вашего URL перенаправления, помните, что вы должны добавить «https» или http. Например: если ваш URL перенаправления https://xxx.xxx.com/path/callback.do , вам нужно всего лишь ввести https://xxx.xxx.com/ , для меня это нормально.


0

первый шаг: используйте все https://example.in или URL-адрес сертификата ssl, не используйте http://example.in

второй шаг: настройка приложения faceboook-> базовая настройка-> добавить свой домен или поддомен

третий шаг: настройка входа в приложение faceboook-> действительные UA-адреса перенаправления OAuth-> добавить URL-адрес всех перенаправлений после входа в систему

четвертый шаг: настройка приложения faceboook-> предварительные настройки-> менеджер домена-> добавление имени домена

проделайте весь этот шаг, затем используйте свой идентификатор приложения, версию приложения, секрет приложения для настройки


0

в расширении Magento 2 Social Login вы должны скопировать с панели действительные URI перенаправления OAuth и добавить ссылку на поле действительных URI перенаправления OAuth на странице настроек клиентского OAuth на developers.facebook.com.


0

Если в вашей игре нет сервера / сайта (например, если вы разрабатываете для Gameroom, как я) - добавьте « https://apps.facebook.com/xxxxxxxxxxxxxxxxx » (вместо идентификатора «xxxxxxxxxxxx» укажите идентификатор приложения) в «Действительные URI перенаправления OAuth» ».


-1

Большинство ответов заключается в добавлении URL-адреса в домен приложения, но когда вы работаете в компании, у вас нет такого доступа. Для них вы можете обойти это, просто сделав виртуальный хост и сделав запись хоста.


добавьте это в файл хоста (/ etc / hosts) 127.0.0.1 www.your_domain.com

создать виртуальный хост. Я использовал это для виртуального хоста apache

ServerAdmin webmaster @ localhost Имя_сервера www.your_domain.com

    ProxyPass / http://localhost:5006/
    RewriteMap  lc int:tolower
    LogLevel debug

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.