Inicio Primeros pasos en Firebase
Entrada
Cancelar

Primeros pasos en Firebase

Primeros pasos en Firebase

Firebase es una plataforma que provee una serie de servicios para el desarrollo de apps.

Entre estos servicios encontramos:

  • Firebase Analytics: análisis del uso de nuestras apps
  • Firebase Cloud Messaging: mensajes y notificaciones para iOS y Android
  • Firebase Auth: autenticacion de usuarios
  • Firebase Realtime Database: base de datos en tiempo real
  • Cloud Firestore: base de datos NoSQL
  • Firebase Storage: almacenamiento de ficheros
  • Firebase Hosting: hosting de páginas web
  • ML Kit: funciones de machine learning
  • Crashlytics: análisis de errores en la app
  • Performance: análisis del rendimiento de la app
  • Firebase Test Lab: testeo de la app
  • Admob: integración de anuncios en la app
  • Firebase Dynamic Links: enlaces para instalar la app, con información preintroducida

Abre el proyecto Android

Puedes usar esta plantilla como base para el proyecto: FirebaseTemplate

Conecta la app a Firebase

  • Selecciona Herramientas > Firebase para abrir la ventana del Asistente.

  • Haz click en Authentication, y luego en Authenticate using Google Sign-in:

    Es posible que en lugar de Authenticate using Google Sign-in te aparezca Authenticate using email and password. No importa, haz clic igualmente.

  • Haz clic en Connect to Firebase

  • Se abrirá la Consola de Firebase en el navegador web. Loguéate con una cuenta y haz clic en Add project

    :

  • Introduce un nombre del proyecto (el que desees) y haz clic en Continue

  • En el paso 2, no es necesario que actives Google Analytics. Haz clic en Create project

Añade la huella SHA-1 de la app

El siguiente paso es añadir la huella SHA-1 de nuestra app. Esto permitirá a nuestra app acceder a los servicios de Firebase.

  • En Studio, abre la ventana Gradle y haz click en la tarea signInReport

  • Copia la clave SHA-1 que aparece en el panel inferior

  • Ahora ve a la Consola Firebase. Abre el proyecto firebase, y ve a Settings / Project settings:

  • Comprueba que esté seleccionado el nombre de package correspondiente a la app:

  • Baja hasta el apartado SHA certificate fingerprints y haz clic en Add fingerprint:

  • Pega la clave y haz clic en Save:

Autenticación

Una vez conectada la app con Firebase, desarollaremos la autenticación de usuarios con cuenta Google.

Añade las librerías del Firebase Authentication SDK

  • En Studio, vuelve al asistente Firebase, y haz click en Add the Firebase Authentication SDK to you app:

  • Aparecerá un diálogo informando de los cambios que se van a realizar en los ficheros build.gradle. Haz clic en Accept changes.

Activa el proveedor de autenticación Google

Ahora activaremos la autenticación mediante cuentas de Google.

  • En la Consola Firebase, ve al apartado Authentication y haz clic en Get started:

  • Haz clic en el provider Google. Introduce un Project support email y haz clic en Save:

Prueba la autenticación

Por último programaremos un pequeño test para ver que la app para que realiza correctamente la auntenticación con una cuenta de Google:

Primero añade estas tres dependencias en el build.gradle (module: App)

1
2
3
implementation 'com.google.android.gms:play-services-auth:19.0.0'
implementation 'androidx.activity:activity:1.2.0-rc01'
implementation 'androidx.fragment:fragment:1.3.0-rc01'

Pon este código en la MainActivity:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import android.content.Intent;
import android.os.Bundle;

import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.appcompat.app.AppCompatActivity;

import com.google.android.gms.auth.api.signin.GoogleSignIn;
import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
import com.google.android.gms.common.api.ApiException;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.GoogleAuthProvider;

public class MainActivity extends AppCompatActivity {

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

        signInClient.launch(GoogleSignIn.getClient(this, new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN).requestIdToken(getString(R.string.default_web_client_id)).build()).getSignInIntent());
    }

    ActivityResultLauncher<Intent> signInClient = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {
        try {
            FirebaseAuth.getInstance().signInWithCredential(GoogleAuthProvider.getCredential(GoogleSignIn.getSignedInAccountFromIntent(result.getData()).getResult(ApiException.class).getIdToken(), null));
        } catch (ApiException e) {}
    });
}

El recurso R.string.default\_web\_client\_id aparecerá en rojo debido a que no existe. No te preocupes, Gradle lo generará automáticamente cuando compile la app.

Ejecuta la app y autentícate con una cuenta de Google. Luego comprueba que en la Consola Firebase del Proyecto aparece el usuario que se ha autenticado:

Para ejecutar la aplicación tendras que volver a seleccionar app en el selector de configuraciones:

Firestore

Habilitaremos una base de datos Firestore, que permitirá a nuestra app guardar datos en la nube.

Añade las librerías del Cloud Firestore SDK

  • Ve al Asistente Firebase de Android Studio, y selecciona la opción Cloud Firestore. Haz clic en Get started with Cloud Firestore

  • Haz clic en Add the Cloud Firestore SDK to your app:

  • Aparecerá un diálogo informando de los cambios que se van a realizar en los ficheros build.gradle. Haz clic en Accept changes.

Crea la base de datos Firestore

  • Ve a la Consola de Firebase, y abre el proyecto firebase.

  • Ve al apartado Cloud Firestore y haz clic en Create database:

  • Selecciona “Start in production mode”. Haz clic en Next

  • Selecciona la localización eur3 (europe-west) y clic en Enable

Establece las reglas de acceso a la base de datos

Cambiaremos las reglas de acceso a la base de datos para permitir la lectura y escritura

  • Ve a la pestaña Rules y establece las siguientes reglas:

    1
    2
    3
    4
    5
    6
    7
    8
    
    rules_version = '2';
    service cloud.firestore {
        match /databases/{database}/documents {
            match /{document=**} {
                allow read, write;
            }
        }
    }
    

    Publica las reglas haciendo clic en Publish:

Prueba la base de datos

Programaremos un pequeño test de escritura de datos.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        //...


        class Post {
            public String title;
            public String message;

            Post(String t, String m){ title = t; message=m; }
        }

        FirebaseFirestore.getInstance().collection("posts").add(new Post("Hello", "hello world!"));
    }
}

Comprueba que los datos se han guardado en la base de datos Firestore.

Storage

El servicio Storage permite subir ficheros a la nube, y descargarlos mediante una URL de descarga.

Los pasos para activarlo son los mismos que hemos hecho antes:

  • Desde el Asistente Firebase de Android Studio, añade las librerías Storage a la app.

  • En la Consola Firebase, ve a la opción Storage y comprueba que está activado.

  • En la sección Rules del Storage, edita y publica las reglas para permitir la lectura/escritura de ficheros.

Por último, prueba que funciona añadiendo este código a la app.

1
2
3
4
// Storage
byte[] bytes = {-1,-40,-1,-32,0,16,74,70,73,70,0,1,2,0,0,1,0,1,0,0,-1,-37,0,67,0,8,6,6,7,6,5,8,7,7,7,9,9,8,10,12,20,13,12,11,11,12,25,18,19,15,20,29,26,31,30,29,26,28,28,32,36,46,39,32,34,44,35,28,28,40,55,41,44,48,49,52,52,52,31,39,57,61,56,50,60,46,51,52,50,-1,-37,0,67,1,9,9,9,12,11,12,24,13,13,24,50,33,28,33,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,-1,-64,0,17,8,0,15,0,15,3,1,34,0,2,17,1,3,17,1,-1,-60,0,31,0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,-1,-60,0,-75,16,0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,125,1,2,3,0,4,17,5,18,33,49,65,6,19,81,97,7,34,113,20,50,-127,-111,-95,8,35,66,-79,-63,21,82,-47,-16,36,51,98,114,-126,9,10,22,23,24,25,26,37,38,39,40,41,42,52,53,54,55,56,57,58,67,68,69,70,71,72,73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,-125,-124,-123,-122,-121,-120,-119,-118,-110,-109,-108,-107,-106,-105,-104,-103,-102,-94,-93,-92,-91,-90,-89,-88,-87,-86,-78,-77,-76,-75,-74,-73,-72,-71,-70,-62,-61,-60,-59,-58,-57,-56,-55,-54,-46,-45,-44,-43,-42,-41,-40,-39,-38,-31,-30,-29,-28,-27,-26,-25,-24,-23,-22,-15,-14,-13,-12,-11,-10,-9,-8,-7,-6,-1,-60,0,31,1,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,-1,-60,0,-75,17,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,119,0,1,2,3,17,4,5,33,49,6,18,65,81,7,97,113,19,34,50,-127,8,20,66,-111,-95,-79,-63,9,35,51,82,-16,21,98,114,-47,10,22,36,52,-31,37,-15,23,24,25,26,38,39,40,41,42,53,54,55,56,57,58,67,68,69,70,71,72,73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,-126,-125,-124,-123,-122,-121,-120,-119,-118,-110,-109,-108,-107,-106,-105,-104,-103,-102,-94,-93,-92,-91,-90,-89,-88,-87,-86,-78,-77,-76,-75,-74,-73,-72,-71,-70,-62,-61,-60,-59,-58,-57,-56,-55,-54,-46,-45,-44,-43,-42,-41,-40,-39,-38,-30,-29,-28,-27,-26,-25,-24,-23,-22,-14,-13,-12,-11,-10,-9,-8,-7,-6,-1,-38,0,12,3,1,0,2,17,3,17,0,63,0,118,-85,-29,-117,29,93,87,82,-41,-76,109,66,-14,11,-101,-77,5,-115,-101,121,50,71,-126,-85,36,91,109,-4,-45,-105,-14,-92,-116,-77,-19,36,52,-123,119,0,66,-119,108,62,36,105,-2,19,-66,-123,-19,116,-19,70,29,52,-38,-91,-35,-35,-110,60,47,28,118,-14,15,-35,-68,113,-119,113,19,-105,120,-55,81,-73,43,35,51,41,59,72,-46,-15,61,-124,30,6,22,-9,23,105,101,109,111,4,-98,69,-122,-83,53,-97,-38,54,68,119,-108,-73,-62,-80,-107,89,87,35,119,42,85,114,78,-25,42,38,-16,-65,-123,-20,-4,101,100,-9,51,91,91,-51,-95,-33,74,102,-69,-71,-118,1,108,53,2,-91,-107,81,85,91,-51,80,-78,2,-20,-50,65,-36,-72,27,-107,-50,-33,30,10,127,89,-65,43,-65,-85,-73,-7,109,-78,-36,-19,110,62,-53,117,111,77,79,-1,-39};

FirebaseStorage.getInstance().getReference("emoji.jpg").putBytes(bytes);

Comprueba que se ha subido el fichero al Storage.


Webgrafía:

Esta entrada está licenciada bajo CC BY 4.0 por el autor.