Detectar cuando un usuario llega a través de las nuevas referencias autenticadas de Facebook

Con las nuevas referencias autenticadas en el nuevo sistema de autenticación de FB, el usuario inicia sesión antes incluso de acceder a mi aplicación.

Mi pregunta es, ¿hay alguna forma de detectar cuándo un usuario acaba de salir de uno de estos diálogos de referencia autenticados? Por ejemplo, especificando redirect_uri en ellos y agregando algunos parámetros GET.

preguntado el 01 de febrero de 12 a las 22:02

2 Respuestas

Si vas a https://developers.facebook.com/apps/YOUR_APP_ID/summary puede configurar el dominio y el sitio web de su aplicación.

Facebook, por razones de seguridad, solo redirigirá al sitio web que establezca aquí pasándole algunos parámetros en la URL HTTP GET (por ejemplo, el token de acceso que se acaba de generar para ese usuario), para decidir cuál de estos parámetros desea recibir, debe ir a la configuración -> diálogo de autenticación y luego en la parte inferior de la página Referencias autenticadas -> Parámetro de token de autenticación.

EDITAR: Si desea asegurarse de que un usuario acaba de usar el cuadro de diálogo de autenticación, puede usar una solución alternativa simple: lea el token de acceso de la URL, luego verifique si es la primera vez que ve este token, si es así, puede probar el validez del token al realizar una operación simple que el usuario en particular aceptó (o mejor su aplicación de Facebook) puede hacer con su perfil. La forma más fácil es probablemente enviar una solicitud a:

https://graph.facebook.com/me?access_token=...

Si el token es válido, entonces ES confiable.

Respondido 02 Feb 12, 03:02

Estaba pensando en detectar la presencia del parámetro & code = o el fragmento #access_token para detectar cuándo un usuario acaba de autorizar mi aplicación. Sin embargo, esto no parece funcionar (¿quizás es porque es una aplicación de lienzo?) Y lo único que se agrega es "# _ = _". Mi segunda pregunta es, ¿los 2 parámetros mencionados anteriormente son un indicador confiable? - Andy Hin

La mía también es una aplicación Canvas, sin embargo en la sección "Selecciona cómo se integra tu aplicación con Facebook" pongo mi sitio web, que en mi caso, es un servidor simple alojado en Google App Engine que elabora el token de acceso que recibo de la autenticación. diálogo. Y para su segunda pregunta, ¿qué quiere decir con confiable? - thermz

Configuré todas esas cosas. Pero Facebook no agrega un valor de código o access_token a la URL. Redirige a mi aplicación con una URL como: apps.facebook.com/myapp#_=_ - Andy Hin

El problema con este método es que necesitaría verificar si el usuario está en la base de datos en cada carga de página de cada página solo para detectar el 0.001% de las solicitudes de página que provienen de una referencia autenticada. Por lo que veo, no hay forma de hacer esto en una aplicación. Facebook agrega? Code = ... para sitios web que usan referencias autenticadas de Facebook. No veo por qué no pueden hacer algo similar para una aplicación de lienzo. - Tom Kincaid

En mi humilde opinión personal, sugerir una alternativa sería algo bueno después de rechazar una pregunta. No solo "No me gusta tu respuesta, incluso si no veo otra alternativa", thermz

Yo mismo he estado trabajando en este problema. Hubiera sido mucho mejor si Facebook hubiera pasado auth_ref = true o algo así. De todos modos, se me ocurrió un sistema que parece funcionar para mí usando cookies.

Ya tengo una página que utilizo como URL de redireccionamiento para el fb auth dilaog. Esta página inicializa al usuario y establece una cookie. Si esa cookie no está presente y la solicitud firmada tiene un token, redirigiré a esta página. No puedo decir si el usuario proviene de una referencia autenticada o de alguna otra ruta como un marcador, pero no importa para mis propósitos.

Puedes ver los detalles en: http://developsocialapps.com/authenticated-referrals-facebook-apps/

Básicamente algo como esto:

// on somepage.php
if (signed request has token && url is not redirect page && user doesn't have cookie) {
    redirect to redirect.php;
}

// on redirect.php
set cookie;
redirect back to somepage.php

respondido 09 nov., 12:18

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.