Vincular gráfico de Facebook en la aplicación iOS y la aplicación web.

Así que he buscado mucho este tema y podría estar complicando las cosas, pero me encantaría tener algo de claridad. Entonces, aquí está el problema.

Tengo una aplicación web que utiliza Facebook Graph (FB Login, amigos invitan, comparten a través de FB, etc.). Acabamos de crear una aplicación de iOS para el website y ahora también queremos implementar todas las acciones de FB anteriores en la aplicación de iOS. Busqué la documentation de Facebook y he intentado utilizarla para que solo el inicio de session de Facebook funcione para un usuario que ya está registrado en nuestro website (y tiene su count de Facebook conectada también), pero parece que no funciona.

Caso de uso : un usuario se registra en la aplicación web y conecta su count de FB con nosotros. Luego descargan la aplicación de iOS y desean usar el inicio de session FB para iniciar session en la aplicación iOS o compartir objects en su línea de time. Un caso a la inversa también debería aplicarse.

Pregunta : ¿Cuál debería ser el flujo de trabajo entre la aplicación ios, el server web y Facebook para el caso de uso anterior? Básicamente, ¿cómo se pasa el token y el secreto para que los tres sepan que estamos hablando del mismo usuario y la misma count de FB?

¡Cualquier enlace o consejo sería muy apreciado! ¡Gracias!

En el caso de que un usuario autenticado por primera vez en Facebook inicie la aplicación nativa, no sabrá quiénes son. Entonces necesitan que se les solicite un button de "iniciar session con Facebook". Cuando presionan ese button, el facebook-ios-sdk descubrirá quién es el usuario registrado y luego verificará si ese usuario ya le ha otorgado acceso a la aplicación. Si la aplicación web y la aplicación nativa apuntan a la misma aplicación de Facebook, entonces el facebook-ios-sdk simplemente almacenará el token de acceso autorizado, y tendrá acceso a todo lo que hace su aplicación web en la aplicación nativa.

La key aquí es que su aplicación web y su aplicación nativa deben apuntar a la misma aplicación de Facebook (es decir, la misma ID de aplicación en developers.facebook.com). Si no lo hizo, se volverá a pedir al usuario de la aplicación nativa que otorgue permissions cuando click el button "iniciar session con Facebook". Además, es importante que el usuario inicie session en la misma count de Facebook en la aplicación web (que se basa en las cookies en el browser) y en el teléfono mismo. El facebook-ios-sdk utiliza un par de forms diferentes para search la count activa de Facebook en el teléfono. Prueba la count de facebook del sistema iOS 5+, las llamadas entre aplicaciones a la aplicación nativa de Facebook, la cookie del browser para la instancia de vista web que se ejecuta en tu aplicación, o rebota al safari y usa la cookie del browser en safari. Cualquiera que uno vuelva primero diciendo que tiene una count de Facebook activa debe haber encontrado la misma count de Facebook que la que está en la aplicación web. En la mayoría de los casos, coincidirán porque la mayoría de los usuarios solo tienen una count de Facebook y están conectados en todas partes con la misma count, pero ciertamente pueden ser diferentes. En caso de que el usuario de facebook de la aplicación web no sea el mismo que el usuario de facebook de la aplicación nativa detectado por facebook-ios-sdk, el button "iniciar session con Facebook" simplemente le solicitará a la aplicación nativa que active el usuario de Facebook que inicie session y otorga permissions.

Una vez que se haya otorgado el token de acceso a la aplicación nativa, puede enviarlo de vuelta al server, encontrar el ID de usuario de Facebook asociado, y ahora el usuario de la aplicación web y el usuario de la aplicación nativa se pueden vincular para ser la misma persona que opera ambas aplicaciones . Además, cualquier gráfico api llamadas que desee hacer en el server se puede hacer en nombre del usuario utilizando el token de acceso actualizado que acaba de get de la aplicación nativa. Cualquier intercambio / publicación / llamadas API realizadas directamente en la aplicación nativa a través de facebook-ios-sdk se realizará como este usuario y será gestionado por el sdk (es decir, no tendrá que preocuparse por ello … debería simplemente funcionan a la perfección e integran todas las publicaciones en su línea de time al igual que el gráfico de la aplicación web).

En el caso de que tenga un usuario nativo de la aplicación autenticado de Facebook que vaya a la aplicación web, tampoco sabrá (a la primera request) quién es este usuario. Puede presentarlos con un inicio de session de Facebook js sdk y, una vez más, una vez que el mismo usuario de Facebook inicie session, puede asociar a este usuario actual de la aplicación web como el que estaba anteriormente en la aplicación nativa.

Específicamente, al abordar su pregunta, realmente no tiene forma de saber quién es un usuario migrante ni en la aplicación web ni en la aplicación nativa cuando llegan por primera vez a la aplicación. Ahí es donde entra el "inicio de session con Facebook". Suponiendo que el usuario haya iniciado session en la misma count tanto en el browser como en su teléfono (según lo determina el facebook-ios-sdk), el process de iniciar session en su aplicación es sin costura. No se les pedirá que otorguen permissions por segunda vez (a less que su set de permissions sea diferente entre la aplicación web y la aplicación nativa) y se le proporcionará el token de acceso del usuario inmediatamente. El rol del server es reconciliar a los dos usuarios utilizando el token de acceso otorgado. Con el token de acceso, el server puede hacer una simple llamada a la gráfica api y get el ID de usuario de Facebook del usuario. Usando ese ID de usuario de Facebook, podrás coincidir con las identidades "verdaderas" de los usuarios en tus aplicaciones (es decir, ahora sabes que el usuario de la aplicación web y el usuario nativo de la aplicación son uno y el mismo). Una vez que sepa quién es el usuario, podrá proporcionar una experiencia personalizada a ese usuario, en function de su identidad, independientemente de si está utilizando su aplicación web o su aplicación nativa.

Espero que esto ayude. Contento de responder más preguntas que pueda tener.