Cómo probar Facebook Connect localmente

193

Yo uso ASP .NET y las API de Facebook Connect. pero cuando ejecuto la aplicación y presiono el botón Conectar, vuelve al sitio web, no al servidor local de prueba que es ( http: // localhost: xxxx / test.aspx ) Entonces, ¿cómo puedo probar Facebook localmente (es decir, cómo puedo cambiar el URL de devolución de llamada)?

Haytham
fuente
44
La respuesta está aquí: forum.developers.facebook.com/viewtopic.php?pid=116136 debe editar el archivo 'C: \ WINDOWS \ system32 \ drivers \ etc \ hosts' para que su dominio llegue a su host local
Haytham
101
Este sistema parece estar bastante mal implementado por parte de Facebook. No parece que se les haya ocurrido que alguien quiera probar la característica que no sea en un servidor en vivo. Las dos soluciones dadas aquí: editar el archivo de hosts locales para falsificar el servidor de producción y redirigirlo a localhost, y cambiar temporalmente la URL de producción en vivo en Facebook a localhost, son un diseño notablemente malo por parte de Facebook. Facebook necesita agregar algún tipo de capacidad de prueba a su sistema.
Paul Legato
2
Bueno, una solución es tener 3 aplicaciones:> en vivo, control de calidad y desarrollo. Entonces, si su aplicación principal es apps.facebook.com/ohnice/ QA y dev puede ser es apps.facebook.com/ohnice_qa_sd/ es apps.facebook.com/ohnice_dev_fg/ sí algo aleatorio para que no tenga visitantes no deseados cuando su casa No es ordenado.
tgkprog
1
@PaulLegato ya está hecho (después de años ...). Vea mi solución o una de las soluciones que utilizan la función de prueba.
Erdal G.

Respuestas:

236

Es bastante simple cuando te enteras.

Abierto /etc/hosts(unix) o C:\WINDOWS\system32\drivers\etc\hosts.

Si su dominio es foo.com, agregue esta línea:

127.0.0.1    local.foo.com

Cuando esté probando, abra local.foo.comen su navegador y debería funcionar.

freeall
fuente
44
Para editar su archivo de hosts en MAC, ejecute "sudo pico / private / etc / hosts" en su terminal, edite y presione "ctrl X" para guardar
Christoffer
@Christoffer: creo que / private / etc es solo un enlace simbólico a / etc, por lo que / etc / hosts y / private / etc / hosts es el mismo archivo.
Freeall
1
Tienes razón ... pero algunos de nosotros necesitamos ser alimentados con cuchara y decir "abrir / etc / hosts" simplemente no es suficiente;) Sin embargo, FB todavía falla localmente con esta solución para mí. No estoy usando el facebook JS
Christoffer
55
esto solía funcionar para mí hasta hace poco, pero ahora recibo una connection refusedexcepción al intentar iniciar sesión, probablemente debido a un cambio en el lado de Facebook. Cualquier idea de una solución alternativa es muy apreciada.
onurmatik
1
Si está haciendo esto para acceder a una aplicación Rails que se ejecuta localmente, es posible que tenga que visitar local.foo.com: 3000` en su navegador ya que las aplicaciones Rails generalmente se ejecutan en ese puerto.
David Tuite
102

Edite su aplicación en www.facebook.com/developers/ y configure la "URL del sitio" en "http: // localhost / myapppath".

Cuando termine, cámbielo de nuevo.

Alex
fuente
19
Facebook no se "conecta" de nuevo a su servidor. Su JS lo hace. Y el JS se ejecuta en el contexto de su navegador. Que sabe a dónde apunta "localhost".
Alex
No me dejaba agregar " localsite ", tenía que asegurarme de tener un punto allí. Esto funcionó: " local.site "
Pete
Algunas funciones de FB no funcionan con esto. Por ejemplo, guarde los logros en los servidores FB. Quiere HTTPS, por lo que mi truco localhost no funciona :(
Kostadin
2
vale la pena señalar que la validación en el formulario de la aplicación requiere que use localhost en la URL, por ejemplo, en http://localhost/myapplugar dehttp://myapp
graham
1
si usa otro puerto, use este patrón: localhost: xxxx ), por ejemplo: localhost: 8080
m0z4rt
77

Sugiero crear una aplicación de prueba (solo para el entorno de desarrollo) en https://developers.facebook.com/apps y establecer: Website with Facebook Loginpropiedad en su configuración localhost: [puerto] .
Esta opción funcionará bien sin necesidad de cambiar los hosts.
recuerde cambiar la aplicación de nuevo a su aplicación de producción una vez que entre en funcionamiento.

Editar : en la última versión de fb lo encontrará en la settingspestaña. ingrese la descripción de la imagen aquí

Sagiv Ofek
fuente
2
O simplemente use archivos de configuración separados para, dev, puesta en escena y en vivo.
Chris Barry
1
Ya no puedo encontrar "Sitio web con inicio de sesión de Facebook".
yehe
55
Parece que tienes que hacer clic en el gran botón horizontal gris "+ Agregar plataforma". Ahí tienes "Sitio web"
Luciano
75

Facebook ha agregado la función de versiones de prueba.

Primero, agregue una versión de prueba de su aplicación: Crear aplicación de prueba

Crear aplicación de prueba

Luego, cambie la URL del sitio a " http: // localhost " en Sitio web y presione Guardar cambios

ingrese la descripción de la imagen aquí

Eso es todo, pero tenga cuidado: ¡las claves de ID de aplicación y secreto de aplicación son diferentes para la aplicación y sus versiones de prueba!

Erdal G.
fuente
Qué es App Domain en el panel de configuración. estoy desarrollando una aplicación iónica con inicio de sesión de Facebook
Chirag thaker
1
@Chiragthaker Es el dominio donde se alojará la aplicación de producción
Erdal G.
3
Esta es una respuesta mucho mejor en mi caso, que editar el hostsarchivo, ya que no requiere el uso de HTTPS en mi servidor de prueba.
Petr Dlouhý
39

¡No tienes que hacer nada difícil!

Facebook → Configuración → básica:
escribir " localhost " en el " App dominios" campo y haga clic en " + Añadir Plataforma " elegir " Sitio Web " .

Después de eso, en el " URL del sitio " campo de escribir su URL localhost
(por ejemplo: http://localhost:1337/something).

Esto te permitirá probar tus complementos de Facebook localmente.

Monigote de nieve
fuente
1
¿hay una solución para los archivos en el archivo de ruta: /// android_assets / www? facebook no permitirá ese camino para la URL del sitio
Vignesh Subramanian
debe ser https ahora
Simon_Weaver
@Simon_Weaver, ¿de dónde sacaste esta información? ¿está documentado en alguna parte?
kolistivra
@Simon_Weaver desde ese enlace que envió: "Aún podrá usar HTTP con direcciones" localhost ", pero solo mientras su aplicación esté en modo de desarrollo".
kolistivra
5

Facebook aparentemente al azar deshabilita la capacidad de configurar localhost como un dominio en su aplicación de Facebook. Encontré que el trabajo más fácil era tunelizar mi localhost a la web. Esto se puede hacer de forma gratuita usando http://progrium.com/localtunnel/ o con una URL personalizada (más fácil ya que no tiene que cambiar la URL cada vez en Facebook) https://showoff.io

rio517
fuente
3
otra opción de túnel es ngrok.com
Mohamed Selim
3

No pude usar las otras soluciones ... Lo que funcionó para mí fue instalar LocalTunnel.net (https://github.com/danielrmz/localtunnel-net-client), y luego usar la URL resultante en Facebook.

Alan Cardoso
fuente
1

Parece que FB cambió la página de desarrollo de la aplicación nuevamente y agregó una función llamada "Lista blanca de IP del servidor".

  1. Vaya a su aplicación y seleccione Configuración -> Pestaña Avanzada
  2. Obtenga su IP pública (google le dirá si googlea "¿Cuál es mi IP")
  3. Agregue su IP pública a la Lista blanca de IP del servidor y haga clic en Guardar cambios en la parte inferior
sevensevens
fuente
¿Qué pasa si varios desarrolladores de diferentes ubicaciones están trabajando en el sitio? Utilizamos VM (Vagrant), por lo que la IP es la misma para todos los desarrolladores. Lamentablemente, Facebook no permite usar IP locales en la lista blanca. No funciona
ProblemsOfSumit
Si estoy leyendo tu comentario correctamente, esto no debería ser un problema. Debe poner su IP pública, que dice que es la misma para cada desarrollador (quería decir que NO es lo mismo). Si tiene varios desarrolladores en diferentes sitios con diferentes IP, puede usar una VPN para enrutar todo el tráfico a través de 1 IP.
Sevensevens
no, la IP pública para diferentes máquinas en diferentes ubicaciones, por supuesto, no es la misma, solo la IP local en cada máquina es la misma. (por ejemplo, localhost). No quiero enrutar nada. Por ahora estoy usando localhost (solo un ejemplo) en la aplicación FB, que funciona bien. Pero necesito una solución una vez que la página se activa. Facebook permite crear "Test-Apps" dentro de una aplicación, que puede ser la solución, pero aún no lo he probado. EDITAR: parece que esa es la solución
ProblemsOfSumit
1

ir a la página del lienzo ... verlo en el navegador ... copiar el texto de la barra de direcciones. ahora ve a tu aplicación de Facebook ve a editar configuración

en el sitio web, en la URL del sitio pegue esa dirección

en la integración de Facebook, vuelva a pegar esa dirección en la url del lienzo

y también el mismo código siempre que requiera una URL de lienzo o una URL de redireccionamiento.

Espero que ayude.

Sangeeta Saharan
fuente
-6

Crea 2 aplicaciones y

En /initializers/env_variables.rb

if Rails.env == 'development'
    ENV['FB_APP_ID'] = "HERE"
    ENV["FB_SECRET"] = "HERE"
else
    ENV['FB_APP_ID'] = "HERE"
    ENV["FB_SECRET"] = "HERE"
end
brillar
fuente