Aplicación de Facebook: localhost ya no funciona como dominio de aplicación

94

He estado escribiendo un juego para Facebook usando Rails y jQuery. Desde que comencé a usar el SDK de Javascript de Facebook, el uso de localhost como dominio de aplicación parecía funcionar bien. Pude probar mi juego tanto localmente como en Heroku.

En el último día, parece que Facebook ha realizado una gran actualización en la interfaz de usuario de su desarrollador. Ahora, si agrego localhost como un dominio de aplicación, me da el siguiente error:

Esto debe derivarse de la URL de Canvas, la URL de Secure Canvas, la URL del sitio, la URL del sitio móvil, la URL de la pestaña de página o la URL de la pestaña de página segura. Verifique y corrija los siguientes dominios: localhost

Mi juego ahora tampoco funciona localmente y obtengo un error cuando el SDK de Javascript inicia sesión en el usuario:

Código de error de la API: 191 Descripción del error de la API: La URL especificada no es propiedad de la aplicación Mensaje de error: Redirect_uri no válida: La configuración de la aplicación no permite la URL especificada.

Esto no sucede cuando implemento mi juego, ya que herokuapp.com se considera un dominio de aplicación válido.

¿Cómo se supone que desarrolle y pruebe mi juego si ya no puedo usar localhost o 127.0.0.1?

Ravenstine
fuente
¿Qué valores tiene para Canvas URL, Secure Canvas URL, Site URL, Mobile Site URL, Page Tab URL o Secure Page Tab URL?
Igy
2
Hola chicos, lo tengo, tienen que crear una nueva "aplicación de prueba", deberían mencionarla en la página de configuración de la aplicación, 1h de búsqueda para que finalmente funcione en localhost: port
Louis Grellet
@LouisGrellet, Bueno, obtengo "Los dominios de nivel superior no están permitidos". Como dijiste, f ***** g
Abhijit Sarkar
1
"En la configuración de Client oAuth, donde dice Use Strict Mode for Redirect URIs, asegúrese de que esté configurado en No y de guardar". - wp-native-articles.com/blog/news/…
eflat

Respuestas:

241

El protocolo parece seguir cambiando y la respuesta aceptada no me funcionó hoy. En caso de que ayude a otros buscadores, esto es lo que funcionó para mí:

  • Todos los cambios se realizaron en la página Configuración en la pestaña Básico

1.) En el centro debajo del primer cuadro de opciones, haga clic en "+ Agregar plataforma" y elija "Sitio web" (o lo que sea apropiado para su aplicación).

2.) En el cuadro que aparece para el sitio web que acaba de agregar: URL del sitio: http://localhost:3000/

3.) En el cuadro de arriba (Configuración => Básico): Dominio de la aplicación: localhost

4.) En la parte inferior derecha, haga clic en "Guardar cambios".

5.) Asegúrese de haber copiado y pegado correctamente el ID de la aplicación en su código. (La identificación está en el primer cuadro de esa página si la necesita nuevamente).

Taylor714
fuente
1
Gracias por actualizar la respuesta. De hecho, parece que la respuesta original ya no funciona (aún así, gracias por tus respuestas originales Camilo y rareclass). Es una pena que Facebook nunca parezca anunciar estos cambios.
Ravenstine
1
Facebook debe haber solucionado esto recientemente para funcionar, localhostya que antes no funcionaba. Gracias por la buena respuesta.
dbasch
25
Tenga en cuenta que su URL también debe aparecer en Configuración> Avanzado> URI de redireccionamiento de OAuth válidos .
Kara Brightwell
3
Esto parece no funcionar más :( Obtengo URL bloqueada: esta redirección falló porque la URI de redireccionamiento no está en la lista blanca en la configuración de OAuth del cliente de la aplicación. Asegúrese de que el inicio de sesión de OAuth de cliente y web estén activados y agregue todos los dominios de su aplicación como OAuth válido Redirigir URI.
Maria Ines Parnisari
3
Ya no puedes usar 'http'. Tiene que ser 'https'.
iJames
31
  1. Vaya a la página de configuración de su aplicación en http://developers.facebook.com
  2. Haga clic en la flecha desplegable en la parte superior izquierda (junto al nombre de su aplicación) y haga clic en "Crear aplicación de prueba" y asígnele un nombre.
  3. En Configuración> Básico de esa nueva aplicación de prueba, configure los dominios de la aplicación como "localhost"
  4. También configure la URL del sitio web como " http: // localhost: 8888 " (o cualquier puerto que esté usando).
  5. IMPORTANTE: esta aplicación tiene un ID de aplicación y un secreto de aplicación diferentes a los de su aplicación en línea. Entonces, último paso: asegúrese de actualizar el código que se encuentra en su localhost con el ID de la aplicación de prueba y el secreto de la aplicación. Por el contrario, el código que se encuentra en el servidor en vivo debe usar el ID y el secreto de la aplicación principal.
georgios
fuente
La solución más sensata / moderna frente a intentar configurar su cuenta prod para que también funcione con un dev env.
Carl Edwards
13

Aún puede probar su aplicación sin implementarla en un servidor remoto como heroku. El truco consiste en actualizar el etc/hostsarchivo de esta manera:

127.0.0.1 mydomain.com

Luego, en la configuración de la aplicación de Facebook, escriba [ http: //] midominio.com, sin "[" y "]"

Funcionó para mí de esta manera

Patricio
fuente
No funcionará si usa un puerto no estándar, que suele ser lo que hacen las personas si desarrollan muchas aplicaciones en paralelo.
mgol
1
Funcionará, usé python -m SimpleHTTPServer para servir en el puerto 8000 y example.com:8000/test-facebook.html , proporcionó el resultado esperado. Supongo que registró 127.0.0.1 example.com en / etc / hosts
Patrick
¡Bueno saber! Entonces parecen ignorar el puerto, raro.
mgol
9

Para todos los que están inquietos con esto en 2017. La interfaz cambió nuevamente. Quería comentar esto a la respuesta pero no tengo suficiente reputación. La URL del host local de su aplicación ahora debe copiarse en tres lugares. Actualmente (26 de octubre de 2017) la secuencia es:

1.) Haga clic en "Configuración" en el menú de la izquierda.

2.) En el centro debajo del primer cuadro de opciones, haga clic en "+ Agregar plataforma" y seleccione "Sitio web" (o lo que sea apropiado para su aplicación).

3.) En el cuadro que aparece para el sitio web que acaba de agregar, copie la URL de su sitio localhost (fe http: // localhost: 3000 / )

4.) En el cuadro de arriba de "App Domain", copie la misma URL.

5.) En la parte inferior derecha, haga clic en "Guardar cambios".

6.) En el menú de la izquierda en "Productos", haga clic en "Iniciar sesión en Facebook" (o agréguelo a través de "+ Agregar productos" si no está disponible)

7.) Ahora se encuentra en la configuración de inicio de sesión de Facebook. Copie la misma URL en el campo "URI de redireccionamiento de OAuth válidos".

Esto debería funcionar.

Imre_G
fuente
2
Tenga en cuenta que Facebook ya no permite "http" para URI de redireccionamiento de OAuth válidos
OmNiOwNeR
5

Simplemente agregue localhost como su URL de lienzo o URL de sitio móvil, esto le permitirá tener localhost y herokuapp.com en la configuración de su dominio de aplicación. Luego, una vez que su aplicación esté en producción, simplemente elimínela.

clase rara
fuente
5

Esta es una forma incorrecta. Debe crear una aplicación de prueba usando la pestaña Prueba en la configuración de la aplicación. Y luego puede ingresar la URL de su etapa de desarrollo (por ejemplo, localhost) en su aplicación.

Esref Atak
fuente
1
Creé una aplicación de prueba pero no funcionó. ¿Más detalles?
Roger Gajraj
Sí, creo que esta es la manera correcta, consulte las instrucciones completas stackoverflow.com/a/38173031/3625739
georgios
5

Solución usando Firebase

Para que esto funcione localhost, el puerto 3000hice lo siguiente:

  1. Crear aplicación

Crear aplicación de prueba

  1. Ahora seleccione "+ Crear aplicación de prueba" en la flecha desplegable (arriba a la izquierda).

ingrese la descripción de la imagen aquí

  1. Agregar localhosta dominios de aplicaciones

ingrese la descripción de la imagen aquí

  1. Agregar http://localhost:3000/a la URL del sitio seleccionando "+ Agregar plataforma"

ingrese la descripción de la imagen aquí

Hasta este punto, había seguido todas las respuestas anteriores enviadas aquí, pero nada funcionó.

Entonces...

  1. En el menú de la izquierda, seleccione "Agregar producto".

  2. Agregar "Inicio de sesión de Facebook"

Se le presentará un carrusel de flujo de trabajo, con el dominio predeterminado http://localhost:3000/, haga clic en "continuar" hasta el final.

  1. Seleccione "Inicio de sesión de Facebook> Configuración" en el menú de productos.

  2. Ingrese su URI de redireccionamiento de Firebase OAuth (que se encuentra cuando habilita el inicio de sesión de Facebook en su consola de firebase https://console.firebase.google.com , ejemplo a continuación)

ingrese la descripción de la imagen aquí

  1. Pegue el URI y guarde.

ingrese la descripción de la imagen aquí

Hecho.

Matt D. Webb
fuente
2

Intente usar la URL con el puerto, por ejemplo

    http://localhost:8000/

Estaba teniendo el mismo problema y encontré esta solución ahora mismo.

Camilo
fuente
1
Debe
1

Esto funciona para mí en heroku, el localhost no funcionó (para mí). Espero que ayude

1.) En el centro debajo del primer cuadro de opciones, haga clic en "+ Agregar plataforma" y elija "Sitio web" (o lo que sea apropiado para su aplicación).

2.) En el cuadro que aparece para el sitio web que acaba de agregar: URL del sitio: http://MYAPP.herokuapp.com/ (reemplace MYAPP con el nombre de su aplicación)

3.) En el cuadro de arriba (Configuración => Básico): Dominio de la aplicación: MYAPP.herokuapp.com (reemplace MYAPP con el nombre de su aplicación)

4.) En la parte inferior derecha, haga clic en "Guardar cambios".

Gamanox
fuente
1

Solo una nota para algunos otros que pueden estar luchando con esto como yo. No he podido hacer que esto funcione con aplicaciones de "prueba". Usando la configuración real de mi aplicación (y simplemente agregando

"http://localhost:3000/"

a la URL de mi lienzo) funcionó como todos los demás sugirieron. Parece que las aplicaciones de prueba no son iguales a las aplicaciones reales.

usuario1775485
fuente
1

Me encontré con un problema con mi aplicación Rails que normalmente ejecuto con http: // localhost: 3000 porque Facebook ahora requiere la redirección de OAuth válida para usar https.

Para usar https localmente, usé [ngrok] [1] que te permite usar https proporcionando un túnel. Para hacer esto:

  1. Fui a su sitio web y descargué su programa.
  2. Extraje el archivo para el programa
  3. En mi consola, entré al directorio donde se extrajo ngrok e ingresé 'grok http 3000' en mi máquina con Windows, otros pueden usar './grok http 3000'
  4. Después de ingresar eso, ngrok proporcionó una dirección https que puse en el campo URI de redireccionamiento de OAuth válido en Facebook
  5. Luego inicié mi servidor y pude acceder a él usando esa dirección https en lugar de localhost: 3000
reinado amarillo
fuente
1

para hacer pruebas locales, todo lo que tiene que hacer es apagar la aplicación o poner la aplicación de Facebook en modo de desarrollo. Entonces Facebook te permitirá acceder a la aplicación solo

Peter Ugah
fuente
0

Para mí funcionó así:

Configuración del panel de la aplicación de Facebook:

* En la pestaña 'básica':

1) Dejar el dominio de la aplicación vacío.

2) Borrar cualquier plataforma. Significado: no hay sitio web ni plataforma de lienzo. (por lo que no hay campo de URL del sitio para completar)

* En la pestaña 'avanzado':

3) Ingresé en los URI de redireccionamiento de OAuth válidos:

http://localhost/myappfolder/redirect.php

4) con respecto a mi código, insdie my c: /xampp/htdocs/localhost/myappfolder/index.php (este archivo hace el loginURL):

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

dentro del archivo redirect.php:

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

y tengo una sesión! ¡finalmente! no hay necesidad de colgarme al final: P

Ohad Glaich
fuente