Androideity

Programación android en español, tutoriales, documentación, noticias, smartphones, tablets, programación android, aplicaciones android

Android Single-Sign-On (SSO) con Facebook

| | 6 Comentarios

Hola amigos de androideity, este post tiene la finalidad de explicar como implementar en Android un Single-Sing-On (SSO) con una aplicación de facebook, SSO es una manera de loggearse dentro de una aplicación por medio de la API de Facebook, sin tener que pedir el nombre de usuario y contraseña de una cuenta de facebook. Esto es posible en android si en el dispositivo se cuenta con la aplicación oficial de facebook, y esta tiene guardada una sesión de facebook, de lo contrario la API de facebook pedirá los datos de la sesión al usuario.

Comenzaremos creando una aplicación en facebook, lo cual podemos hacer en este link https://developers.facebook.com/apps

Les quedará algo así:

Para este ejemplo solo necesitamos asignarle nombre a nuestra aplicación, y fijarnos en la APPID que se muestra, ya que la utilizaremos en nuestro proyecto android, también podemos ver el check de NAtive Android App, el cual habilitaremos más adelante para lograr implementar SSO en android.

A continuación, descargamos la SDK oficial de Facebook para android, la cual esta en github: https://github.com/facebook/facebook-android-sdk

Una vez que tenemos la SDK de facebook, creamos nuestro proyecto android, en el cual incluiremos las clases del SDK de facebook, dejando la estructura como la siguiente manera:

 

Ahora pasaremos con nuestra clase main, en mi caso, le he cambiado el nombre a “FBConnectTestActivity”.

En esta creamos una nueva instancia de la clase Facebook, y en el constructor le pasaremos el ID de nuestra aplicación, y en el onCreate() de nuestra actividad, le daremos el authorize() a la instancia de Facebook para loggear al obtener un token de acceso a la aplicación de Facebook.

El metodo de authorize() nos regresa un DialogListener, en el cual cachamos si se obtuvieron los datos correctamente, si existieron errores o si se cancela la petición por medio de onComplete(), onFacebookError(), onError() y onCancel().

Adicionalmente, debemos de sobrecargar el metodo de onActivityResult() del Activity para cachar el callback de la clase de facebook.

Nuestra clase que de la siguiente manera:

Ahora debemos de habilitar en nuestra aplicación de Facebook el SSO, regresemos a nuestro aplicación en facebook, y habilitaremos la opción de Aplicación Android Nativa, y activemos el configurado para android SSO, y en el campo de Tecla de cuadrado Android agregaremos la firma de nuestra aplicación android, esta se obtiene por medio de la keytool de android en consola, si solo estamos haciendo pruebas, debemos hacer uso de la llave por default de android, la cual es la “debug.keystore”, si exportamos nuestro proyecto debemos de hacer uso del código generado por la llave con la que se firmo la apk. Más información de como obtener la firma de llaves de aplicaciones android en este link: http://developer.android.com/tools/publishing/app-signing.html

Una vez que tenemos nuestro codigo en la aplicación, guardamos los cambios.

Ahora podemos ejecutar nuestro proyecto android y ver como se muestra un Dialog el cual pide al usuario dar permisos de que esta aplicación acceda a su información de facebook.

El código completo del ejemplo lo puedes ver en: https://github.com/ChelixPreciado/androidsso

Saludos.. :P

 

Comparte este post

Acerca de: Chelix Preciado

Colimense perdido en chilangolandía, android developer, marvel comics fan, agnóstico, algo sarcástico, nadador retirado, rockero frustrado, aprendiz de la vida, mutante del futuro perdido en la presente corriente temporal, perdío sus poderes de telekinesis y control del tiempo y del espacio después de una lobotomía

Sígueme en Twitter

Leer todos mis artículos

También puede interesarte

Comentarios de este artículo

  • R_aguilar11

    Excelente tutorial! Muy bien explicado!

  • Pingback: Permisos de Facebook SDK en Android | Androideity

  • Gianfrancogutierrez12

    chelixx te amoo

  • Yolanii Bv11

    hemos estado usando el sdk de facebook para intentar que nuestra aplicación entre automáticamente si ya nos encontramos logueados en la aplicación de facebook y eso funciona bien con tu ejemplo, pero queremos que estando una vez dentro de nuestra aplicación se pueda tener acceso a los datos de la cuenta con la que ha entrado pero al parecer no se recupera el token_access de la cuenta de facebook, dentro de nuestra aplicación tenemos una opción de login que al dar clic sobre ella esta debe verificar que si ya nos encontramos logueados en facebook no te pida tu cuenta ni contraseña simplemente acceda a tu información de facebook…

    hemos usado lo siguiente pero al parecer no funciona bien ya que nos dice que los tokens no coinciden

    case R.id.login
    if(facebook.isSesionValid())
    {
    faceboo.authorize(this, new DialogListener());
    @Override
    public void onComplete(Bundle values)
    {
    SharedPreferences.Editor editor = mPrefs.edit();
    editor.putString(“access_token”, facebook.getAccessToken());
    editor.putLong(“access_expires”, facebook.getAccessExpires());
    editor.comit();
    }
    }

  • Bilkar

    Hola, interesante post, siempre creí que lo que has hecho era una cosa muy díficil de hacer, pero lo has hecho “como los grandes”, simple!!!… he descargado las fuentes y probado y genial… sin embargo cuando intento hacerlo con mi aplicación de Facebook, me encuentro con un problema y no se si he llenado bien los datos, te mando una copia para que me hagas las correcciones necesarias, saludos, gracias, y: BRAVO, BRAVISIMO, BARVARO AMIGO!!!

  • Alvaro Doune

    Es tal cual lo que ando buscando, si esto funciona tiro cuetes! Saludos