Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.
Login con Google
Instalación
- Tendremos que loguearnos en la consola de Firebase
- Crear nuevo proyecto
- google-services.json
- Engranaje de settings -> Project Settings -> Download google-services.json
- En Android Studio cambiamos el modo de visualización del proyecto a Proyecto.
- Arrastramos el fichero creado (google-services.json) sobre la carpeta APP.
- Pegamos en el build.gradle del módulo y proyecto las líneas que nos indica el asistente de configuración.
- 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.
- 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
- Iniciamos sesión en developers.facebook.com. La documentación global está en este enlace.
- Mis aplicaciones -> Agregar una aplicación
- Panel -> Elegir plataforma -> Android -> Añadimos al build.gradle la dependencia que se nos indica
compile 'com.facebook.android:facebook-android-sdk:[4,5)'
- Pegamos Añadimos el facebook id a nuestra aplicación:res/values/strings.xml
<string name="facebook_app_id">1508558065902615</string>
- Modificamos el AndroidManifest.xml:
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
- Introducimos en la página web los datos que se nos solicitan y que podemos recuperar de nuestra aplicación Android.
- 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)