socialite - Facebook OAuth "El dominio de esta URL no está incluido en el dominio de la aplicación"
logueo con facebook laravel (26)
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
localhost
a otro nombre de dominio (aún local en mi máquina). Ahora recibo el siguiente error.
No se puede cargar la URL: el dominio de esta URL no se incluye 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
-
la URL de mi 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 ...
No sé cuál es el problema ...
No se puede cargar la URL: el dominio de esta URL no se incluye 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.
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 el inicio de sesión de Cliente y Web OAuth esté activado ...
La configuración para ajustar se encuentra aquí https://developers.facebook.com/apps/[your_app_itentifier]/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í
Para obtener cualquier nombre de dominio para una aplicación en una máquina local de Windows, edite el archivo
host
.
Los nombres personalizados son buenos para deshacerse de todos esos
0.0.0.0:30303
localhost:8080
,
0.0.0.0:30303
,
127.0.0.0:8000
, etc.
Debido a que algunos servicios de terceros como FB a veces no le permiten usar nombres
127.0.0.0
.
En Windows 10
hosts
archivo de
hosts
está aquí:
C:/Windows/System32/drivers/etc/hosts
Copia de seguridad del archivo inicial, crea 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
:3000
configuró NGINX, por ejemplo.
Asegúrate de que tu aplicación sea pública. Haga clic en + Agregar producto Ahora vaya a productos => Inicio de sesión en Facebook Ahora haga lo siguiente:
URI de redireccionamiento OAuth válidos: example.com/
Desautorizar URL de devolución de llamada: https://example.com/facebookapp
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 terror "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)
En caso de que alguien se encuentre con esto y esté buscando esta configuración (como yo)
Tienes que
- En el lado izquierdo, haga clic en "+ Agregar producto" y seleccione "Inicio de sesión de Facebook" (fue para mí la parte superior)
- Vea la nueva configuración disponible en el lado izquierdo
- Ahora tendrá esta configuración de OAuth en esa "Configuración del producto"
Información adicional:
asegúrese de agregar la URL de devolución de llamada como
http://localhost:3000
al campo
Valid OAuth redirect URIs
en la página de configuración de inicio de sesión de Facebook
En caso de que esto ayude a alguien más, esto comenzó a suceder en un sitio más antiguo cuando los "URI de redireccionamiento de OAuth válidos" se hicieron obligatorios. El sitio todavía estaba usando el SDK V4 PHP y el problema se resolvió para mí al actualizar al SDK V5.
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 de 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.
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.
Esto es lo que hice para resolver este problema:
Básicamente:
1) Habilite " Inicio de sesión de OAuth del navegador incorporado "
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 :)
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
-
Seleccione la aplicación correcta y haga clic en el botón editar;
-
Verifique que las URL y las rutas estén correctamente ingresadas y que apunten al sitio donde ha instalado el complemento Ultimate para Facebook.
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í :)
Haga clic aquí Código Proyecto ! Su ejemplo de proyecto de código. Me esta funcionando
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í.
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:
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í.
La mayoría de las respuestas se refieren a agregar la URL al dominio de la aplicación, pero cuando trabajas en una empresa no tienes acceso, 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 apache virtual host
ServerAdmin webmaster @ localhost ServerName www.your_domain.com
ProxyPass / http://localhost:5006/
RewriteMap lc int:tolower
LogLevel debug
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
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, acabo de entrar en la configuración del producto.
03. Verifique si ha proporcionado una URL de redireccionamiento de 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 imagen de abajo que he agregado varias URL de redireccionamiento.
- tengo algún problema adicional Mira mi video--> https://www.youtube.com/watch?v=mdhubrzV5y8&t=3s
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!
Tuve el mismo problema ..... el issu 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'']);
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.
Usando mi propio servidor local.
Simplemente agregue
http://localhost/my-site
como URL en:
https://developers.facebook.com/apps/YOUR-APP-ID/fb-login/
trabajó para mi.
Yo tuve el mismo problema,
Acabo de agregar el enlace de mi dirección local
http://localhost/Facebook%20Login%20Test.html
a la
Site URL
en la configuración de mi aplicación
https://developers.facebook.com/apps
.
Ahora funciona bien :) Espero que esto haya sido útil;)
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.
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 aplicación, secreto de aplicación para la configuración
Esto funcionó para mí:
Esto es lo que hay que entender: Facebook siempre buscará el dominio " WWW ". 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 verifique 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.