Login

Curso de Android

2.  
3.  
4.  
6.  
7.  
9.  
11.  
13.  
14.  
15.  
16.  
17.  

Contactar con el profesor

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)
← Mapas
Dibujar →

Aviso Legal | Política de privacidad