2011-01-27 16 views
7

He desarrollado una API simple para permitir la comunicación entre mis aplicaciones de Android/iPhone y mi servidor. En mi aplicación, los usuarios deben autenticarse y lo hacen utilizando las credenciales de usuario/contraseña con la siguiente llamada a la API:Facebook Connect para autenticar en una API personal

http://api.myapp.com/login?user=xxx&pass=pass 

aplicación recibe a cambio:

{ "api_token": "xxxx-xxxx-xxxx-xxxx" } 

Así que básicamente intercambiar mis credenciales contra api_token.

Me gustaría agregar el soporte de Facebook Connect. He utilizado con éxito el SDK de Facebook y recibo el access_token correcto.

Sin embargo, tengo que poner en práctica un mecanismo de intercambio access_token con api_token

Suponiendo que el usuario ya se haya conectado a su cuenta en Facebook (en su panel de usuario de la web), ¿cuál sería la mejor aplicación para proceder al intercambio ?

Respuesta

5

Así es como finalmente lo hice. Está funcionando muy bien durante más de un año, nunca tuvo ningún problema. La idea es intercambiar fichas utilizando la siguiente llamada a la API:

http://api.myapp.com/login/facebook?access_token=<facebook_access_token> 

lado del servidor, a verificar la validez de la access_token con un simple

wget -qO- https://graph.facebook.com/me?access_token=<facebook_access_token> 

Qué le envía de vuelta un JSON con toda la información del usuario, incluyendo ID de usuario de Facebook. Suponiendo que el usuario ya ha conectado su cuenta a Facebook, puede buscar el user_id y enviar un api_token.

+0

Este es el escenario que me preocupa: Aplicación A adquiere un token de acceso fb de usuario con permisos X. Ap A visita su URL de inicio de sesión en 'http://api.myapp.com/login/facebook ? access_token = ... ' Dado que ahora tiene el token de acceso que ha adquirido la aplicación A, ahora tiene todo el mismo acceso al usuario que ellos, sin que el usuario le haya dado permiso para hacerlo (ellos ' solo se otorgó permiso a la aplicación A). Aunque puedo ver esto como defendible de varias maneras, todavía parece algo erróneo, y potencialmente una violación de la confianza del usuario. ¿Qué opinas? –

+2

Bueno, sí, tienes razón, pero en lo que a mí respecta, somos la "Aplicación A". En mi humilde opinión, es lo mismo que un usuario que se suscribe a nuestro boletín: podemos enviar spam al usuario o vender el correo electrónico a un montón de terceros, pero no lo hacemos porque somos una empresa responsable (con responsabilidad ante la ley) – EricLarch

Cuestiones relacionadas