Curso de Android | Login

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.

Login con Google

Instalación

  1. Tendremos que loguearnos en la consola de Firebase
  2. Crear nuevo proyecto
  3. google-services.json
    1. Engranaje de settings -> Project Settings -> Download google-services.json
    2. En Android Studio cambiamos el modo de visualización del proyecto a Proyecto.
    3. Arrastramos el fichero creado (google-services.json) sobre la carpeta APP.
  4. Pegamos en el build.gradle del módulo y proyecto las líneas que nos indica el asistente de configuración.
  5. Abrimos el fichero Build.gradle del módulo y copiamos el valor del applicationID. Nos vamos a la página de firebase y lo pegamos en: Engranaje de settings -> Project Settings -> Package Name.
  6. Habrá que añadir los siguientes repositorios:build.gradle (project)
allprojects {
    repositories {
        maven { url 'https://maven.google.com'  }
    }
}
build.gradle
dependencies {
	implementation 'com.google.android.gms:play-services-auth:17.0.0'
	implementation 'com.google.android.gms:play-services-base:17.1.0'
	implementation 'com.google.android.gms:play-services-maps:17.0.0'
...

Para poder recuperar datos del usuario como la contraseña, debemos ejecutar el siguiente código en nuestro ordenador:

y copiar el codigo SHA que genera en Consola de Firebase -> tuerquita de configuración -> Configuración del proyecto -> huella digital del certificado

Configuración

layout.xml
<com.google.android.gms.common.SignInButton
	android:id="@+id/sign_in_button"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
/>
Login.java
public class MainActivity extends AppCompatActivity implements GoogleApiClient.OnConnectionFailedListener{ 
	private GoogleApiClient googleApiClient;
	private SignInButton signInButton;
	private int SIGN_IN_CODE;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.login_google);

		GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
			.requestEmail() //Esta línea es opcional, por si quiero el mail del usuario
			.build();

		googleApiClient = new GoogleApiClient.Builder(this)
			.enableAutoManage(this, this)
			.addApi(Auth.GOOGLE_SIGN_IN_API)
			.build();

		signInButton = (SignInButton) findViewById(R.id.sign_in_button);
		signInButton.setOnClickListener(new View.OnClickListener(){
			@Override
			public void onClick(View view) {
				Intent intent = Auth.GoogleSignInApi.getSignInIntent(googleApiClient);
				startActivityForResult(intent,SIGN_IN_CODE);
			}
		});
	}

	@Override
	public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {}

	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		super.onActivityResult(requestCode, resultCode, data);
		if(requestCode == SIGN_IN_CODE){
			GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
			manejaResultado(result);
		}
	}

	private void manejaResultado( GoogleSignInResult result ){
		if(result.isSuccess()){
			Toast.makeText(this, "Exito en el Login",Toast.LENGTH_SHORT).show();
		}else{
			Toast.makeText(this, "Error en el Login",Toast.LENGTH_SHORT).show();
		}
	}

Recuperar los datos del usuario logueado con google

SecondActivity.java
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login_google_second_activity);

        photoimageView1 = findViewById(R.id.photoImageView1);
        nombreTextView = findViewById(R.id.nombre);
        emailTextView = findViewById(R.id.email);
        id = findViewById(R.id.texto);

        GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestEmail()
                .build();

        googleApiClient = new GoogleApiClient.Builder(this)
                .enableAutoManage(this, this)
                .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
                .build();
    }

    public void desloguearse(View v){

    }

    @Override
    protected void onStart() {
        super.onStart();

        OptionalPendingResult<GoogleSignInResult> opr = Auth.GoogleSignInApi.silentSignIn(googleApiClient);
        if(opr.isDone()){
            GoogleSignInResult result = opr.get();
            manejarResult(result);
        }else {
            opr.setResultCallback(new ResultCallback<GoogleSignInResult>() {

                @Override
                public void onResult(@NonNull GoogleSignInResult googleSignInResult) {
                    manejarResult(googleSignInResult);
                }
            });
        }
    }
    private void manejarResult(GoogleSignInResult result){
        if(result.isSuccess()){
            GoogleSignInAccount account = result.getSignInAccount();
            nombreTextView.setText(account.getDisplayName());
            emailTextView.setText(account.getEmail());
            id.setText(account.getId());
        }else{
            startActivity(new Intent(this, SecondActivity.class));
        }
    }

Login con Facebook

  1. Iniciamos sesión en developers.facebook.com. La documentación global está en este enlace.
  2. Mis aplicaciones -> Agregar una aplicación
  3. Panel -> Elegir plataforma -> Android -> Añadimos al build.gradle la dependencia que se nos indicacompile 'com.facebook.android:facebook-android-sdk:[4,5)'
  4. Pegamos Añadimos el facebook id a nuestra aplicación:res/values/strings.xml<string name="facebook_app_id">1508558065902615</string>
  5. Modificamos el AndroidManifest.xml:<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
  6. Introducimos en la página web los datos que se nos solicitan y que podemos recuperar de nuestra aplicación Android.
  7. Seguimos las instrucciones que se nos indican apra generar un Key Hash.

Creamos una clase que hereda de Application y que tendrá la siguiente línea en el onCreate:

AppEventLogger.activateApp(this)

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.