2011-06-10 23 views
7

¿Es posible autenticar al usuario en el lado del servidor utilizando el token de autenticación recuperado por la aplicación Android de Facebook? En otras palabras, la aplicación de Android usa SSO y obtiene auth token. A continuación, envía este token a la aplicación back-end implementada en Google App Engine. Luego, la aplicación de back-end verifica al usuario contra Facebook usando el token.Facebook auth token exchange

Supongo que no es posible porque el token recuperado solo puede ser utilizado por la aplicación de Android, pero ¿quién sabe? Tal vez puede ser reutilizado de alguna manera?

Respuesta

0

Facebook en realidad tiene un SDK de Android que le permite hacer esto. La información se puede encontrar here.

+0

Sí, sé que puedo SSO en Android. Pero la pregunta es si puedo intercambiar token de autenticación con mi aplicación de back-end. – user793456

0

Sí, puedes. Un token de acceso válido es un token de acceso válido. La API Graph hace desde donde llegó el token, pero solo que el token tiene los permisos apropiados para acceder a esa parte de la API de gráfico. Tenga en cuenta, sin embargo, que el token solo es válido durante 24 horas desde el momento de su emisión. (¿Es realmente una palabra?) ¿Desde el momento en que se emite?

0

Al usar facebook android sdk con SingleSignOn (SSO), el formato del token de acceso cambió realmente. En lugar de obtener token de autenticación tradicional que contiene ID de usuario & clave de sesión como parte de authToken ahora tenemos un formato diferente de authToken

medida que Facebook Devs están todavía en proceso de apoyo no descansar apis con el recién formateado token de acceso su parte podemos deshabilitar el SSO en sdk de facebook de Android cambiando DEFAULT_AUTH_ACTIVITY_CODE a -1 desde 32665 (en Facebook.java) Esto invocará el dialouge tradicional para otorgar el token de acceso y a cambio obtendrá un token de acceso que contendrá la clave de sesión en él.

Los que están buscando para generar claves de sesión seguro que necesita para añadir su propio método en Facebook.java como

getSessionSecret public String (cadena accessToken) throws MalformedURLException, IOException { Bundle b = new Bundle() ; b.putString ("método", "auth.promoteSession"); b.putString ("access_token", accessToken); b.putString ("session_key_only", "true"); Respuesta de cadena = solicitud (b); respuesta de retorno; }

2

El Token que obtienes de la API de Android se puede enviar a tu servidor, quien puede verificar la validez del token consultando el gráfico (usando/me? Auth_token = .... por ejemplo). El problema es que el mismo token puede ser utilizado por un tercero, no es específico del cliente, por lo que si basas la identificación del servidor en eso, tienes un problema (una tercera aplicación podría usar su token de usuario y autenticarse mediante tú). Estoy tratando de encontrar una manera de resolver este problema, pero todavía no tengo buenas ideas ...

Cuestiones relacionadas