Ir ao contido principal

Firebase Auth y Data Connect

Autenticación Firebase​

O SDK de autenticación de Firebase declárase como unha dependencia (libs.firebase.auth) e inclúese na BOM de Firebase. Non obstante, na versión actual da aplicación, o fluxo de autenticación principal non se delega en Firebase Auth: o inicio de sesión implícase mediante unha consulta directa á táboa Supabase usuarios comparando o ID e o contrasinal.

Firebase Auth está dispoñible para a eventual migración do sistema de autenticación a un fluxo estándar baseado en JWT (correo electrónico/contrasinal, OAuth, etc.) sen necesidade de engadir dependencias adicionais.

DataConnectClient​

DataConnectClient.kt implementa un cliente HTTP manual para invocar o punto final de Firebase Data Connect. A diferenza do SDK Supabase, non hai ningún SDK de Kotlin para Data Connect dispoñible neste contexto, polo que HttpURLConnection úsase directamente.

Configuración do punto final​

object DataConnectClient {
private const val API_KEY = "<api-key-de-ejemplo>..."
private const val APP_ID = "<app-id-de-ejemplo>..."
private const val ENDPOINT =
"https://europe-southwest1-dataconnect.googleapis.com/v1beta/projects/tu-proyecto.../connectors/default:executeGraphql" +
"/locations/europe-southwest1/services/tu-proyecto.../connectors/default:executeGraphql"
}

O subdominio rexional europe-southwest1-dataconnect.googleapis.com é necesario. Usar o dominio xenérico dataconnect.googleapis.com devolve o HTTP 404 cando o servizo está implantado nunha rexión distinta de us-central1.

Firma do metodo execute​

suspend fun execute(
query: String,
variables: Map<String, Any?> = emptyMap(),
operationName: String? = null
): JSONObject?
ParámetroTipoDescrición
queryStringConsulta GraphQL ou mutación en formato de cadea
variablesMap<String, Any?>Variables de operación GraphQL (opcional)
operationNameString?Nome da operación cando o documento contén varios (opcional)

Valor de retorno: JSONObject coa resposta da API completa (incluíndo o obxecto data) ou null se se produciu un erro de rede ou a resposta HTTP non tivo éxito (código fóra do intervalo 200–299).

Cabeceiras HTTP enviadas​

CabeceiraValor
Content-Typeapplication/json
x-goog-api-keyClave da API do proxecto Firebase
x-firebase-gmpidID do proxecto Firebase da aplicación

Solicitar estrutura corporal​

{
"query": "query GetUsuarios { usuarios { id nombre } }",
"variables": {
"id": 42
},
"operationName": "GetUsuarios"
}

Os campos variables e operationName omítense do corpo se non se proporcionan.

Xestión de erros​

Os erros de rede (IOException, SocketTimeoutException, etc.) captúranse cun bloque catch(Exception) e rexístranse con Log.e("DataConnect", ...). Nese caso, o método devolve null. Os erros HTTP (resposta con código fóra do intervalo 200–299) lense desde o errorStream da conexión e tamén se rexistran antes de devolver null.