• INICIO
  • SOBRE MÍ
  • HERRAMIENTAS
  • VIDEOS
  • SERVICIOS
  • CONTACTAR

Blog de Jonathan Melgoza

MENUMENU
  • Menu
  • Programación
  • Desarrollo web
  • Tecnología
  • Marketing
  • SEO
  • Informática
  • Ganar Dinero
  • Emprendimiento
  • Electrónica
  • Entrevistas
  • Reviews
  • Opinión
  • Hacking
  • Offtopic
Blog > Programacion > Login con facebook en android

Login con facebook en android

Login con facebook en android

Jonathan Melgoza 2016-11-23 Programacion
Comparte con tus amigos
Compartir en Facebook Compartir
Compartir en TwitterTweet
Compartir en Linkedin Compartir

Actualmente que las redes sociales estan a la orden del día practicamente cualquier persona cuenta con una, sobretodo hablando de facebook, y si lo acompañamos con el auge que estan teniendo las aplicaciones moviles entonces tenemos una combinacion que debemos aprovechar. Hoy vamos a ver como realizar un login con facebook en android para nuestras aplicaciones moviles y obtener información valiosa como el nombre, email, imagen de perfil y demás datos desde esta red social, ¿te animas?

Ventajas del login con facebook en android

Ofrecer una opcion de login con facebook en android ofrece muchas ventajas tanto para nuestros usuarios como para nosotros, aqui algunas:

  • Comodidad al cliente al no tener que pensar en otra informacion de logueo.
  • Comodidad al cliente al no tener que escribir un usuario y contraseña, sobretodo en moviles.
  • Rapidez, ya que al iniciar sesion con facebook podriamos obtener decena de datos en solo unos segundos.
  • Seguridad, ya que estaremos utilizando la informacion de su perfil social que, en teoría.. es informacion correcta.
  • Diseño mas estetico colocar un boton de facebook que un formulario de registro de hace 10 años.

Como puedes ver aqui hay solo unas ventajas de otras varias más que seguro puedes adivinar.

Crear una app en facebook

Para poder ofrecer un sistema de login con facebook en android necesitamos crear una app que conecte con nuestra app movil, asi que vamos a https://developers.facebook.com/apps y creamos una nueva app.


¿Sabías que?

¿Necesitas aprender algo nuevo ? Ve a Udemy, busca el tema del que quieres aprender, selecciona el curso para ti y continua con tu aprendizaje.

Udemy

Elegimos el nombre para mostrar, correo electronico de contacto y una categoria.

Nos vamos a configuracion y podemos agregar un icono de aplicacion para que sea mas confiable nuestro login, despues vamos a agregar plataforma en esta misma pantalla hasta abajo.

Elegimos android y escribimos el nombre de paquete de nuestra app (que tiene o que llevará), nombre de la clase principal (que tiene o que llevará) y un hash de clave, veamos como generar este último:

Para obtener este hash ejecuta el siguiente comando en tu cmd:

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

La contraseña por defecto de tu almacen de claves es: android

Una vez introducido este hash y la demas informacion ve a la pestaña revision de la aplicación y asegurate de hacerla publica.

Mas adelante necesitarás el app id de esta app que se encuentra en la pestaña configuración.

Facil ¿no?

Integrar el sdk de facebook en nuetra app

Para integrar el sdk de facebook en nuestro proyecto seguimos estos pasos:

  • Agrega al build.gradle de proyecto el siguiente codigo
buildscript {
    repositories {
        mavenCentral() 
    }
}
  • Agrega al build.gradle de modulo el siguiente codigo
dependencies {
    compile 'com.facebook.android:facebook-android-sdk:4.6.0'
}
  • Vamos a nuestro archivo strings.xml dentro de res->values y agregamos un nuevo elemento con el identificador facebook_app_id con tu id de aplicacion de facebook que creamos anteriormente.
<string name="facebook_app_id">111111111111111111</string>
  • Nos aseguramos de tener los permisos adecuados de Internet en nuestro manifiesto
<uses-permission android:name="android.permission.INTERNET"/>
  • Por ultimo agregamos la actividad de facebook que se utilizará para la pantalla de login.
<activity android:name="com.facebook.FacebookActivity"
                android:configChanges=
                    "keyboard|keyboardHidden|screenLayout|screenSize|orientation"
                android:theme="@android:style/Theme.Translucent.NoTitleBar"
                android:label="@string/app_name" />

Ahora para crear un login con facebook en android seguimos con la creación del botón.

Creando el boton de login

Para crear el boton de login vamos al xml de nuestra interfaz donde estará situado el boton y agregamos el siguiente codigo:

<com.facebook.login.widget.LoginButton
        android:id="@+id/facebook_sign_in_button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="15dp"
        android:layout_marginBottom="10dp"
        android:layout_gravity="center_horizontal" />

Recordando el id de este elemento que es facebook_sign_in_button.

Ahora en nuestro codigo java en el metodo oncreate agregamos el codigo de inicializacion de facebook,

FacebookSdk.sdkInitialize(getApplicationContext());
mFacebookCallbackManager = CallbackManager.Factory.create();

donde mFacebookCallbackManager fue inicializado antes como sigue:

CallbackManager mFacebookCallbackManager;

Obtenemos el boton que creamos en nuestro xml

loginfacebook = (LoginButton) findViewById(R.id.facebook_sign_in_button);

y luego viene la magia:

//SOCIAL
		loginfacebook.setReadPermissions(Arrays.asList("public_profile", "user_friends", "email", "user_birthday"));
		loginfacebook.registerCallback(mFacebookCallbackManager, new FacebookCallback<LoginResult>() {
			@Override
			public void onSuccess(LoginResult loginResult) {
				// App code
				GraphRequest request = GraphRequest.newMeRequest(
					loginResult.getAccessToken(),
					new GraphRequest.GraphJSONObjectCallback() {
						@Override
						public void onCompleted(
								JSONObject object,
								GraphResponse response) {
							try {
								// get profile information
								String name = "";
								String email = "";
								String uriPicture = "";
								if (object.getString("name") != null) {
									name = object.getString("name");
								}
								if (object.getString("email") != null) {
									email = object.getString("email");
								}
								if (object.getString("picture") != null) {
									JSONObject imagen = new JSONObject(object.getString("picture"));
									JSONObject imagen2 = new JSONObject(imagen.getString("data"));
									uriPicture = imagen2.getString("url");
								}
								// save profile information to preferences
								SharedPreferences prefs = getSharedPreferences("com.nuestraapp.app", Context.MODE_PRIVATE);
								prefs.edit().putString("com.nuestraapp.app.nombre", name).apply();
								prefs.edit().putString("com.nuestraapp.app.email", email).apply();
								prefs.edit().putString("com.nuestraapp.app.uriPicture", uriPicture).apply();
								// redirect to main screen
								startActivity(new Intent(Registro.this, Main.class));
							} catch (JSONException e) {
								e.printStackTrace();
							}
						}
					});
				Bundle parameters = new Bundle();
				parameters.putString("fields", "id,name,link,gender,birthday,email,picture");
				request.setParameters(parameters);
				request.executeAsync();

			}

			@Override
			public void onCancel() {}

			@Override
			public void onError(FacebookException error) { Log.d(Registro.class.getCanonicalName(), error.getMessage()); }
		});

Ahora solo debemos agregar el siguiente codigo posterior al anterior:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
	super.onActivityResult(requestCode, resultCode, data);
	mFacebookCallbackManager.onActivityResult(requestCode, resultCode, data);
}

Veamos en detalle como obtuvimos la informacion de perfil desde facebook.

Obtener la informacion del perfil desde facebook

En esta linea le decimos a facebook que tipo de informacion queremos obtener:

loginfacebook.setReadPermissions(Arrays.asList("public_profile", "user_friends", "email", "user_birthday"));

y posteriormente le indicamos unicamente que campos queremos:

parameters.putString("fields", "id,name,link,gender,birthday,email,picture");

en el evento onCompleted nos viene la informacion en un JSONObject y unicamente debemos obtenerla para hacer con ella lo que queramos, en mi caso la guardo en las sharedpreferences para no volver a pedir el login de nuevo dentro de la app.

Para mas informacion sobre informacion que puedes obtener desde facebook puedes consultar la documentacion del sdk de facebook.

Ahora ya vimos como crear un login con facebook en android!

Cualquier duda u opinión no dudes en dejarme un comentario abajo y con todo gusto lo responderé.

Saludos!

Clic para valorar esta información
[Total: 0 Promedio: 0]

Comparte con tus amigos
Compartir en Facebook Compartir
Compartir en TwitterTweet
Compartir en Linkedin Compartir

  • jonathan melgoza

    ¡Hola! Soy Jonathan Melgoza, Ingeniero en sistemas computacionales, juntos en este blog aprenderemos sobre programación, desarrollo web, tecnología, SEO, emprendimiento y mucho más, cosas que a ti y a mí nos apasionan.

    sigueme en feedly

    Easy Codigo - Soluciones en software, web y movil

    jonathan__melgoza

    Proyecto de electrónica con Esp32Cam.Proyecto c Proyecto de electrónica con Esp32Cam.Proyecto completo en el blog.#electronica #arduino #iot #esp32cam #proyecto
    Sígueme en Instagram
    vacante de programador en easycodigo
    Como ganar dinero por internet
    Como crear mi marca personal en Internet
    Como hacer un blog este 2017

Enlaces

  • Sobre mí
  • Acerca del blog
  • Aviso Legal
  • Escribir post de invitado
  • Publicidad en el sitio

Ayuda hosting

  • Mejor Hosting en México en el 2023
  • Como Contratar un Hosting
  • Hosting para tienda en linea – SSL Gratis!
  • ► Hosting WordPress México 💕 Top 3 💕
  • Hosting con cPanel – Mejores Proveedores

Articulos recientes

  • Validar dimensiones de imagen con JS
  • ¿Cómo obtener el mayor rendimiento de un empleado?
  • ¿Qué es el chat de OpenAI?
  • Configurar variables de entorno en MAC OS
Jonathan Melgoza Copyright © 2023.
Hospedado por WebEmpresa