Facebook OAuth "El dominio de esta URL no está incluido en el dominio de la aplicación"

248

Permítanme comenzar diciendo que he buscado una respuesta a esta pregunta durante bastante tiempo ...

Estoy tratando de configurar Facebook OAuth para que funcione con mi aplicación que se está desarrollando localmente en mi máquina. Todo funcionaba perfectamente con la autorización de Facebook HASTA que pasé de usar localhostotro nombre de dominio (aún local a mi máquina). Ahora recibo el siguiente error.

No se puede cargar la URL: el dominio de esta URL no está incluido en los dominios de la aplicación. Para poder cargar esta URL, agregue todos los dominios y subdominios de su aplicación al campo Dominios de aplicación en la configuración de su aplicación.

Mi archivo de hosts contiene 127.0.0.1 photovote.dev (funciona perfecto)

Mi redirección en mi aplicación (usando Socialite) es http://photovote.dev/auth/facebook/callback

En la configuración de mi aplicación de Facebook ...

  • mi dominio de aplicación es photovote.dev
  • mi URL del sitio es http://photovote.dev/
  • mi URI de redireccionamiento OAuth válido es http://photovote.dev/auth/facebook/callback

La URL en el momento del mensaje de error es ...

https://www.facebook.com/v2.5/dialog/oauth?

No sé cuál es el problema ...

Captura de pantalla 1
Captura de pantalla

Captura de pantalla 2 ingrese la descripción de la imagen aquí

peligro
fuente
3
Hola peligroso, es posible que desee ofuscar su FB client_id de esta publicación
a.benain
@dangel, ¿cómo resolvió este problema? Tengo el mismo problema, pero no puedo resolverlo.
Ghimire
@Ghimire, en mi situación, había cambiado la URL y no actualicé mi secreto de cliente. Al leer las soluciones a continuación, parece que en realidad podría haber varias razones diferentes, todas con el mismo error.
peligroso
@dangel revisa esto. stackoverflow.com/questions/46626914/…
Ghimire

Respuestas:

81

Esto generalmente sucede si ha ingresado los detalles incorrectos cuando creó la aplicación en Facebook. ¿O ha cambiado las URL de una aplicación existente?

¿Puede volver a verificar la configuración de su aplicación en esta página?

https://developers.facebook.com/apps

  1. Seleccione la aplicación correcta y haga clic en el botón editar;

  2. Verifique que las URL y las rutas estén correctamente ingresadas y que apunten al sitio donde ha instalado el complemento Ultimate de Facebook.

Lei Lionel
fuente
3
Acabo de ver lo que dijo sobre "cambió una URL de una aplicación existente", eso es exactamente lo que sucedió, y supongo que causó la generación de un nuevo ID de cliente \ secreto
peligro
Hola, también estoy tratando de implementar fb oauth en mi aplicación. He dado todos los detalles sobre la aplicación fb. Pero, aparecerá el siguiente error mientras se redirecciona la devolución de llamada. InternalOAuthError: no se pudo obtener el token de acceso en Strategy.OAuth2Strategy._createOAuthError (D: \ node_tutorials \ fb \ node_modules \ passport-oauth2 \ lib \ strategy.js: 370: 17) en D: \ node_tutorials \ fb \ node_modules \ passport-passport-passport \ lib \ strategy.js: 166: 45 en D: \ node_tutorials \ fb \ node_modules \ oauth \ lib \ oauth2.js: 177: 18
Anand
Otra cosa para probar que funcionó para mí: intente cambiar sus devoluciones de llamada de https a http. Eso implica cambiar tanto el código que llama a getLoginUrl () como cambiar las URL de devolución de llamada en la configuración de la aplicación. Las devoluciones de llamada nunca funcionaron con HTTPS para mí, por alguna razón, a pesar de que el sitio usa HTTPS.
Josh1billion
Tengo el mismo problema, pero al abrir la página localmente; Añadí 127.0.0.1:8000 a las direcciones autorizadas, ya que es cómo se configura la instalación de easyphp, pero todavía no funciona. ¿Solo puedo probar los scripts de FB en línea?
Jumpjack
"haga clic en el botón de edición" ummm ¿qué botón es ese?
Alexander Mills
210

En caso de que alguien se encuentre con esto y esté buscando esta configuración (como yo)

Tienes que

  1. En el lado izquierdo, haga clic en "+ Agregar producto" y seleccione "Inicio de sesión de Facebook" (estaba en la parte superior para mí)
  2. Vea la nueva configuración disponible en el lado izquierdo
  3. Ahora tendrá esta configuración de OAuth en esa "Configuración del producto"

ingrese la descripción de la imagen aquí

Información adicional: asegúrese de agregar la URL de devolución de llamada como http://localhost:3000al Valid OAuth redirect URIscampo en la página de configuración de inicio de sesión de Facebook

Craig Lambie
fuente
22
Esto no es a lo que se refiere el mensaje de error. Hay un mensaje de error específico con respecto a los URI de redireccionamiento de OAuth válidos , que no es lo que está sucediendo aquí. El mensaje se refiere claramente a Configuración »Básico» Dominios de aplicaciones. Sin embargo, el problema es que aunque se completen los dominios correctos, el mensaje de error sigue apareciendo.
fritzmg
Dejando a un lado el diccionario urbano @HakamFostok, Maths reina en un orden superior para el significado de LHS / RHS en.wikipedia.org/wiki/Sides_of_an_equation , especialmente en el mundo de la codificación.
Craig Lambie el
99
Esto me lo arregló. Aunque tenía el dominio completado correctamente, no había agregado una URL de redireccionamiento. Agregar la URL de redireccionamiento solucionó el problema. Parece que en este momento FB está enviando un mensaje de error incorrecto para este problema.
Richard Garside
Estoy trabajando localmente y esta es mi url 127.0.0.1/CM/public, ¿cuál debería ser mi URI de redireccionamiento OAuth válido?
Youssef Boudaya
1
Esto funcionó para mí en api v2.7 y el comentario de @ RichardGarside es exacto. No tenía ningún valor establecido Valid OAuth Redirect URIsy al agregar este valor de campo se resolvió el mensaje de error FB incorrecto relacionado con la actualización de su App Domains.
johnsampson
60

Yo tuve el mismo problema. Lo resolví agregando mi URI de redireccionamiento OAuth como argumento para la llamada a la función getAccessToken:

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

Si no se envía ningún argumento a esa función, el SDK genera el URI de redireccionamiento por sí mismo, lo que debería funcionar, pero en mi caso no lo hizo.

Espero que esto ayude a alguien.

Swoot
fuente
2
Esta es la única forma en que podría hacerlo funcionar después de mover mi sitio web de http a https. Incluso después de cambiar todos los dominios en la configuración de la API de Facebook, simplemente no funcionaría.
Chris
66
Esta debería ser la respuesta aceptada. ¡Resuelve el problema!
tormuto
En mi caso, la url en sí misma no debe incluir parámetros vacíos. Cuando le doy "www.example.com?param" a getAccessToken, FB siempre dice que no coincide con el URI que le di a getLoginUrl, que estoy absolutamente seguro de que es exactamente lo mismo. El uso de "www.example.com" no genera dicho error.
Chlind
2
gracias . resuelto por esto - realmente malo de Facebook porque todos estos errores son abstractos / ambiguos y no sabes dónde mirar también
digitalzoomstudio
Esto responde a la pregunta.
John
35

Asegúrate de que tu aplicación sea pública. Haga clic en + Agregar producto Ahora vaya a productos => Facebook Inicie sesión ahora haga lo siguiente:

URI de redireccionamiento OAuth válidos: example.com/

Desautorizar URL de devolución de llamada: https://example.com/facebookapp http://unicodeitsolutions.com/

Sanjoy Kanrar
fuente
1
¿Para qué es Deauthorize Callback URL : https://example.com/facebookappnecesario? ¿Funcionará sin eso?
Jordan
Desautorizar URL de devolución de llamada no es obligatorio ... cuando el usuario desautorice nuestra aplicación, Facebook nos enviará un ping por la URL.
Sanjoy Kanrar
20

Esto es lo que hice para resolver este problema: ingrese la descripción de la imagen aquí

Básicamente:

1) Habilite el " Inicio de sesión integrado del navegador OAuth "

2) Desactive " Usar modo estricto para URI de redireccionamiento " e ingrese un URI de redireccionamiento como lo hice yo.

3) Deje el resto de las opciones como están.

4) Guarde sus cambios.

5) Disfruta :)

Bangbang
fuente
Esto lo resolvió para mí. No quería hacer pública mi aplicación, ya que solo estaba haciendo un tutorial y probándolo localmente. Gracias @bangbang
PHBeagle
1
Para mí, Usar modo estricto para URI de redireccionamiento no se puede deshabilitar.
fdehanne
8

Tuve el mismo problema, y ​​vino de un ID de cliente / ID de aplicación de Facebook incorrecto.

¿Cambió su aplicación de Facebook a "pública" o "en línea? Cuando lo hace, Facebook crea una nueva aplicación con una nueva ID de aplicación.

Puede comparar el valor del parámetro "client_id" en la url con el del panel de control de Facebook.

guillaume.deslandes
fuente
Todo lo que hice fue cambiar el dominio y la URL del sitio para que correspondiera de cambiar de localhost a photovote.dev. Actualicé el URI de redireccionamiento en mi aplicación y también en la configuración de Facebook. Podría intentar crear una nueva aplicación
peligro
hmm, supongo que cambié algo en la configuración de la aplicación que causó que se generara una nueva ID, porque tienes razón, ya no coincidía. ¿Quizás cuando actualicé la URL del sitio? independientemente de que esté funcionando de nuevo
peligroso
Esto funcionó para mí. Estaba usando una identificación de aplicación antigua en producción.
Marcus W
8

La forma en que lo arreglé: fui al cuadro de texto Valid OAuth Redirect URIs y configuré la URL exacta , no solo el dominio :

antes de: https://my-website.com

después: https://my-website.com/facebookoauth/facebooklogin

(la url puede ser diferente en su caso, verifíquela en la barra de direcciones del navegador).

Esto fue causado por la configuración Usar modo estricto para URI de redireccionamiento, que estaba bloqueado en la posición Sí.

Cosmin
fuente
Muchas gracias por esto. Esto solucionó mi problema
vickris
7

No se puede cargar la URL: el dominio de esta URL no está incluido en los dominios de la aplicación. Para poder cargar esta URL, agregue todos los dominios y subdominios de su aplicación al campo Dominios de aplicación en la configuración de su aplicación.

Hoy tuve este problema, encuentro que la documentación de Facebook y el SDK son irrespetuosos y atroces con otros desarrolladores, por decir lo menos.

Además de tener los "dominios de la aplicación" en dos ubicaciones diferentes sin mucha información (3 si agrega una plataforma "web"), también debe ir a productos de la aplicación / inicio de sesión / configuración de Facebook y agregar su URL de redireccionamiento en URI de redireccionamiento OAuth válido

El error no dice NADA sobre la configuración de oauth.

adrianTNT
fuente
1
Sí, tuve que hacer este paso adicional también. Comparto sus puntos de vista sobre la documentación!
Magnus Smith
6

A partir de 2017-10.

Solución que resolvió mi problema.

Actualmente ese FB rinde esta sorpresa.

... Configuración de Cliente OAuth de la aplicación. Asegúrese de que Cliente y Web OAuth Login estén en ...

ingrese la descripción de la imagen aquí

La configuración para ajustar se encuentra aquí https://developers.facebook.com/apps/[your_app_itentifierfont>/fb-login/ .

La barra inclinada final es importante. Deben coincidir en el código de su aplicación y en la configuración de administración de FB. Entonces, esta es una configuración en algún lugar de su código (vea a continuación cómo obtener cualquier nombre de dominio para una aplicación de desarrollo):

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

y aquí

ingrese la descripción de la imagen aquí

Para obtener cualquier nombre de dominio para una aplicación en una máquina Windows local, edite el hostarchivo. Los nombres personalizados son buenas con el fin de deshacerse de todos aquellos localhost:8080, 0.0.0.0:30303, 127.0.0.0:8000, etcétera. Debido a que algunos servicios de terceros como FB a veces no le permiten usar 127.0.0.0nombres.

En Windows 10 el hostsarchivo está aquí:

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

Copia de seguridad del archivo inicial, cree una copia con un nombre diferente (No funciona en Windows CMD nativo. Uso Git para Windows , tiene muchos comandos Unix)

$ cp hosts hosts.bak

Agregue esto en 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

Para deshacerse de la parte del puerto, :3000configure NGINX, por ejemplo.

Verde
fuente
Gracias por esto, ¡no tenía idea de que se requería la barra inclinada final!
Andy Holmes
el 11 de mayo de 2018, la URL de devolución de llamada en las aplicaciones y los URI de redireccionamiento oauth válidos en Facebook deben ser los mismos. y https es imprescindible sin embargo.
Yuda Prawira
La barra diagonal final me ahorra tiempo. ¡Gracias!
HyoJin KIM
6

La mayoría de las veces sucede sin insertar la URL de redireccionamiento OAuth válida adecuada en la sección del producto del panel de control de FB. Sugiero seguir mis pasos a continuación

01. Verifique que la configuración básica de la aplicación esté bien con la siguiente imagen con usted

ingrese la descripción de la imagen aquí

02. verifica si has agregado un producto

Si no, puede agregar fácilmente el producto de inicio de sesión haciendo clic en + seno como lo muestro a continuación.

En caso afirmativo, solo llegué al interior de la configuración del producto. ingrese la descripción de la imagen aquí

03. Verifique si ha proporcionado una URL de redireccionamiento OAuth válida

Simplemente significa lo que debería después de iniciar sesión. No es otra cosa que su URL de devolución de llamada. Puede ver en mi siguiente imagen que he agregado varias URL de redireccionamiento. ingrese la descripción de la imagen aquí

  1. tengo algún problema adicional Mira mi video--> https://www.youtube.com/watch?v=mdhubrzV5y8&t=3s
Rumesh Madushanka
fuente
La pregunta de 2 años y los enlaces a sitios externos no deben ser el contenido principal de una respuesta.
zzxyz
6

Facebook ha deshabilitado recientemente el botón de alternancia para ' Usar el modo estricto para redirigir los URI ', por lo que debe agregar el URI exacto que se llama cuando presiona el botón de inicio de sesión. Para mi caso fue como se muestra en la captura de pantalla. Resolvió el problema para mí :)

ingrese la descripción de la imagen aquí

Bhaskar Choudhary
fuente
5

En mi caso, lo que tenía que hacer era habilitar el inicio de sesión de OAuth del navegador incorporado

ingrese la descripción de la imagen aquí

sh6210
fuente
También estaba usando el inicio de sesión basado en el navegador, por lo que estaba enfrentando el mismo problema. También hay un cuadro de entrada debajo donde tuve que poner mi URI de redireccionamiento exacto.
Absin
4

Nada realmente funcionó para mí, hasta que actualicé la versión del SDK que estaba usando. Empecé con 5.0. Ni siquiera 5.4.0 tampoco funcionaría. Cuando actualicé a 5.6.2, funcionó a la perfección, ¡a pesar de que no había nada en los registros de cambios que fuera relevante!

Ste_95
fuente
1
¡Tenía exactamente este problema! Estaba usando "5.4.2" y actualicé a "5.6.2"
John Smith
2

Esta opción debe estar habilitada en el portal:

ingrese la descripción de la imagen aquí

Daniel Krzyczkowski
fuente
Gracias. Tuve el mismo problema y este fue el cambio que me perdí.
timeon
¡Gracias! Esto también trabajó para mí (yo estaba usando Google Firebase También tuve que fijar los "URI de redirección de OAuth válidos" a la redirección de OAuth URI dada a mí por Google para mi proyecto..)
mwang25
2

En caso de que esto ayude a alguien más, esto comenzó a suceder en un sitio antiguo cuando los "URI de redireccionamiento de OAuth válidos" se hicieron obligatorios. El sitio todavía estaba usando el V4 PHP SDK y el problema se resolvió por mí al actualizar al V5 SDK.

Kenneth Spencer
fuente
1

En la sección Dominio de la aplicación, está escribiendo su dominio de la aplicación, pero también necesita agregar su dominio de inicio de sesión, es decir, el nombre de la página html donde solicita al usuario que inicie sesión. En mi caso, lo estaba probando en localhost y la ruta de inicio de sesión era localhost / login. Si solo pongo http://localhost.com en la sección Dominio de la aplicación, aparece este error. Pero después de agregar http: //localhost/login.com , se solucionó el error. y también la configuración de la aplicación ha cambiado en la versión más reciente del SDK, en la que no hay opción para la ruta de redireccionamiento de OAuth. Debe asignar la ruta de redireccionamiento directamente desde el lado del servidor, después de obtener con éxito el token OAuth.

Anum Sheraz
fuente
1

Esto funcionó para mí:

Esto es lo que hay que entender: Facebook siempre buscará el dominio " WWW ". Así que asegúrese de que www.your_domain.dev funcione primero en su navegador.

Es posible que si tiene varios hosts virtuales en su servidor local, algún otro host virtual anule " www.your_domain.dev ". Así que por favor revisa eso. Apache elegirá la PRIMERA definición de dominio (o puertos, o algo en estos términos; no soy un experto en esto, pero aprendí por errores). Una solución rápida y fácil para esta anulación de host virtual es colocar " www.your_domain.dev definición de host virtual en la parte superior del archivo" httpd-vhosts.conf ".

Vaya a " /apache/conf/https-vhosts.conf " y coloque esto en la parte superior del archivo:

<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>

Siguiente: Si está utilizando el sistema Windows, edite su archivo "hosts" en "C: \ Windows \ System32 \ drivers \ etc" agregando dos líneas:

127.0.0.1 your_domain.dev
127.0.0.1 www.your_domain.dev

Siguiente: reinicie su servidor Apache y todo debería funcionar ahora.


Espero que esto te ayude y te ahorre tiempo. Perdí casi todo un día buscando en la web y me estaba arrancando el pelo y no pude encontrar nada útil hasta que encontré esto.

Altin
fuente
1

Tuve el mismo problema ... el problema está en la versión PHP SDK 5.6.2 y la solución fue editar el siguiente archivo:

facebook\src\Facebook\Helpers\FacebookRedirectLoginHelper.php

cambia esta línea

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

a

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

Chevelle
fuente
0

Este mismo error de Facebook me sucedió en el entorno de producción. La razón fue que tenía 2 aplicaciones registradas en Facebook (Local, Producción) pero codifiqué el ID de la aplicación Local en el código fuente y olvidé cambiarlo por el ID de la aplicación de Producción antes de la implementación.

La mejor práctica dicta que no debe tener la ID de la aplicación codificada en el código fuente, pero si lo hace, no coincida con sus diversas ID de aplicaciones de Facebook como lo hice por error.

Jimmy Shaw
fuente
0

Usando mi propio servidor local.

Simplemente agregando http://localhost/my-sitecomo URL en:

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

trabajó para mi.

Reece Kenney
fuente
0

El problema y las respuestas siguen cambiando a medida que FB ajusta el procedimiento de inicio de sesión. Hoy, comencé a recibir este mensaje de horror "El dominio de esta URL no está incluido en los dominios de la aplicación. Para poder cargar esta URL, agregue todos los dominios y subdominios de su aplicación al campo Dominios de la aplicación en la configuración de su aplicación".

La respuesta fue: ahora FB quiere la uri de redireccionamiento completo. Entonces, para mí, donde solía ser solo https://www.example.com ahora quiere https://www.example.com/auth/facebook/callback . Esto tiene que ir en el campo "URI de redireccionamiento de OAuth válido" (desarrollador / inicio de sesión de Facebook-> configuración)

Peter Robinson
fuente
0

Inicio de sesión en Facebook -> Configuración -> URI de redireccionamiento OAuth válidos -> inserte los dominios de su URL de redireccionamiento, recuerde que debe agregar 'https' o http. por ejemplo: si su URL de redireccionamiento es https://xxx.xxx.com/path/callback.do , solo necesita ingresar https://xxx.xxx.com/ , está bien para mí.

刘 同 彬
fuente
0

primer paso: use todos los https://example.in o URL del certificado SSL, no use http://example.in

segundo paso: configuración de la aplicación faceboook-> configuración básica-> agrega tu dominio o subdominio

tercer paso: configuración de inicio de sesión de la aplicación faceboook-> URI de redireccionamiento de OAuth válido-> agregue su URL de redireccionamiento completo después de iniciar sesión

cuarto paso: configuración de la aplicación faceboook-> configuración avanzada-> Administrador de dominio-> agregue su nombre de dominio

haga todo este paso y luego use su ID de aplicación, versión de la aplicación, secreto de la aplicación para la configuración

ganesh avhad
fuente
0

en la extensión Magento 2 Social Login, debe copiar los URI de redireccionamiento de OAuth válidos desde el panel y agregar el enlace al campo URI de redireccionamiento de OAuth válido en la página Configuración de OAuth del cliente en developers.facebook.com

felmez
fuente
0

Si su juego no tiene servidor / sitio (por ejemplo, si se desarrolla para Gameroom como yo), agregue " https://apps.facebook.com/xxxxxxxxxxxxxxxxx " (coloque su ID de aplicación en lugar de "xxxxxxxxxxxx") a "URI de redireccionamiento de OAuth válido ".

Andrey
fuente
-1

La mayoría de las respuestas se refieren a agregar la URL al dominio de la aplicación, pero cuando trabajas para una empresa no tienes estos accesos. Para eso, puedes evitar esto simplemente haciendo un host virtual y haciendo una entrada de host.


agregue esto en el archivo de host (/ etc / hosts) 127.0.0.1 www.your_domain.com

crear un host virtual. Lo he usado para el host virtual apache

ServerAdmin webmaster @ localhost ServerName www.your_domain.com

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

ashishyadaveee11
fuente