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

189

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

Я пытаюсь настроить Facebook OAuth для работы с моим приложением, которое разрабатывается локально на моей машине. Все отлично работало с авторизацией в 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
Изображение 238

Экранный снимок 2 Изображение 239

  • 2
    Привет Данжел, вы можете замаскировать свой FB client_id из этого поста
  • 0
    @Dangel, как вы решили эту проблему? У меня такая же проблема, но я не могу ее решить.
Показать ещё 2 комментария
Теги:
facebook
facebook-graph-api
oauth
laravel-socialite

27 ответов

58
Лучший ответ

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

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

https://developers.facebook.com/apps

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

  • Проверьте правильность ввода URL-адресов и путей и указывайте на сайт, на котором установлен плагин Ultimate Facebook.

  • 3
    Я только что увидел, что вы сказали о «вы изменили URL существующего приложения», именно это и произошло, и я думаю, что это привело к созданию нового идентификатора клиента \ секретного кода
  • 0
    Привет, я также пытаюсь реализовать FB oauth в моем приложении. Я дал все подробности о приложении FB. Но следующая ошибка появится при перенаправлении обратного вызова. InternalOAuthError: Не удалось получить токен доступа в Strategy.OAuth2Strategy._createOAuthError (D: \ node_tutorials \ fb \ node_modules \ passport-oauth2 \ lib \ стратегии.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
Показать ещё 3 комментария
181

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

Вы должны

  • В левой части нажмите "+ Добавить продукт" и выберите "Facebook Login" (он был в верх для меня)
  • См. новые настройки, доступные с левой стороны.
  • Теперь у вас будут настройки OAuth на "Параметры продукта"

Изображение 3536

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

  • 15
    Это не то, к чему относится сообщение об ошибке. Существует конкретное сообщение об ошибке относительно допустимых URI перенаправления OAuth , что не происходит здесь. В сообщении четко указано «Настройки» Основные »Домены приложений. Однако проблема заключается в том, что даже при заполнении правильных доменов сообщение об ошибке по-прежнему отображается.
  • 0
    @HakamFostok городской словарь в стороне, математика царит в более высоком порядке по смыслу LHS / RHS en.wikipedia.org/wiki/Sides_of_an_equation , особенно в мире кодирования.
Показать ещё 6 комментариев
45

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

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

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

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

  • 1
    Это единственный способ заставить его работать после перемещения моего сайта с http на https. Даже после изменения всех доменов в настройках Facebook Api он просто не будет работать.
  • 6
    Это должен быть принятый ответ. Решает проблему!
Показать ещё 8 комментариев
29

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

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

Деактивировать URL-адрес обратного вызова: https://example.com/facebookapp Изображение 3537

  • 0
    Для чего Deauthorize Callback URL : https://example.com/facebookapp ? Будет ли это работать без этого?
  • 0
    Деавторизовать URL обратного вызова не обязательно ... когда пользователь деавторизует наше приложение, Facebook будет пинговать нас по URL.
18

Вот что я сделал для решения этой проблемы: Изображение 3538

В принципе:

1) Включить " Встроенный браузер OAuth Login "

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

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

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

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

  • 0
    Это решило это для меня. Я не хотел публиковать свое приложение, потому что я только делал учебник и тестировал его локально. Спасибо @bangbang
  • 0
    Добро пожаловать :)
Показать ещё 2 комментария
7

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

Вы переключили свое приложение Facebook на "общедоступный" или "онлайн"? Когда вы это сделаете, Facebook создает новое приложение с новым идентификатором приложения.

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

  • 0
    Все, что я сделал, это изменил домен и URL сайта, чтобы они соответствовали с localhost на photovote.dev. Я обновил URI перенаправления в своем приложении, а также в настройках Facebook. Я мог бы просто попытаться создать новое приложение
  • 0
    хм, наверное, я изменил что-то в настройках приложения, что привело к созданию нового идентификатора, потому что вы правы, он больше не соответствует. Возможно, когда я обновил URL сайта? несмотря на это снова работает
Показать ещё 1 комментарий
6

Как я ее исправил: я перешел в текстовое поле Valid UA Redirect URI и установил точный URL-адрес, а не только домен:

до: https://my-website.com

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

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

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

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

Нажмите здесь Code Project ! Пример его кода. Его работа со мной

Изображение 3539

  • 0
    добавление первого решило проблему!
4

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

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

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

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

Изображение 3540

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

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

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

и здесь

Изображение 3541

Чтобы получить любое доменное имя для приложения на локальной машине 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

Резервный исходный файл, создайте копию с другим именем (не работает в родной Windows CMD. Я использую 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, например.

  • 0
    Спасибо за это, понятия не имел, что косая черта необходима!
  • 0
    11 мая 2018 года URL-адрес обратного вызова для приложений и действительные URI перенаправления oauth на Facebook должны совпадать. и https должен хотя.
4

У меня была та же проблема,

Я только что добавил ссылку моего локального адреса http://localhost/Facebook%20Login%20Test.html на Site URL в настройках моего приложения https://developers.facebook.com/apps.

Теперь он отлично работает:) Я надеюсь, что это было полезно;)

3

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

  • 1
    У меня точно была эта проблема! Я использовал "5.4.2" и обновился до "5.6.2"
3

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

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

Изображение 3542

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

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

Если "Да" просто попал внутрь настройки продукта. Изображение 3543

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

Его простой смысл, что должно после входа в систему. Это не что иное, как ваш обратный вызов URl. Вы можете видеть на моем следующем рисунке, я добавил несколько URL-адресов переадресации. Изображение 3544

  1. есть какие-либо проблемы далее Смотрите мой video--> https://www.youtube.com/watch?v=mdhubrzV5y8&t=3s
  • 0
    2-летний вопрос, и ссылки на внешние сайты не должны быть основным содержанием ответа.
2

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

Изображение 3545

2

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

2

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

Изображение 3546

  • 0
    Благодарю. У меня была та же проблема, и это был переключатель, который я пропустил.
  • 0
    Спасибо! Это также сработало для меня (я использовал Google Firebase. Мне также пришлось установить «Действительный URI перенаправления OAuth» на URI перенаправления OAuth, предоставленный мне Google для моего проекта.)
1

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

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

Помимо наличия "доменов приложений" в двух разных местах без особой информации (3, если вы добавляете "веб-платформу"), вам также нужно перейти к приложениям/файлам приложений /facebook login/settings и добавить URL-адрес переадресации в соответствии с URI OUuth Redirect URI

Ошибка говорит НИЧЕГО о настройках oauth.

  • 0
    Да, мне тоже пришлось сделать этот дополнительный шаг. Я разделяю ваши взгляды на документацию!
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

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

0

Пробовал ответы здесь и получил сообщение "Извините, это не сработало", которое ничего не говорит вам?

Вы используете тестовое приложение?

  • Затем вам нужно создать тестового пользователя (внутри вашего приложения есть вкладка для "Test Users")
  • Да. Вы должны выйти из своей обычной учетной записи FB (или переключиться на другой режим браузера/инкогнито)
  • Войдите в систему с помощью тестового пользователя. Это работает с кнопкой входа в Facebook.

Это работало для меня с сегодняшнего дня с https://localhost:5001 и с доменом через Cloudflare Argo с обратным прокси-туннелированием (а не с бесплатным сервисом).

0

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

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

Изображение 3547

0

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

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

третий шаг: вход в систему faceboook login setting-> Действительный OAuth Redirect URIs-> добавить свой URL-адрес для перенаправления после входа в систему

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

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

0

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

0

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

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

0

Использование моего локального сервера.

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

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

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

0

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

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

-1

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


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

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

      ServerAdmin webmaster @localhost       ServerName www.your_domain.com

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню