Перейти к основному содержанию

Firebase Auth y Data Connect

Аутентификация Firebase​

Firebase Auth SDK объявлен как зависимость (libs.firebase.auth) и включен в спецификацию Firebase. Однако в текущей версии приложения основной поток аутентификации не делегируется Firebase Auth: вход осуществляется посредством прямого запроса к таблице Supabase usuarios сравнения идентификатора и пароля.

Firebase Auth доступен для возможной миграции системы аутентификации на стандартный поток на основе JWT (электронная почта/пароль, OAuth и т. д.) без необходимости добавления дополнительных зависимостей.

Клиент DataConnect​

DataConnectClient.kt реализует HTTP-клиент вручную для вызова конечной точки Firebase Data Connect. В отличие от Supabase SDK, в этом контексте нет Kotlin SDK для Data Connect, поэтому HttpURLConnection используется напрямую.

Конфигурация конечной точки​

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"
}

Требуется региональный субдомен europe-southwest1-dataconnect.googleapis.com. Использование общего домена dataconnect.googleapis.com возвращает HTTP 404, когда служба развертывается в регионе, отличном от us-central1.

Фирма метода выполнения​

suspend fun execute(
query: String,
variables: Map<String, Any?> = emptyMap(),
operationName: String? = null
): JSONObject?
ПараметрТипОписание
queryStringЗапрос или мутация GraphQL в строковом формате
variablesMap<String, Any?>Переменные операции GraphQL (необязательно)
operationNameString?Имя операции, если документ содержит несколько (необязательно)

Возвращаемое значение: JSONObject с полным ответом API (включая объект data) или null, если произошла сетевая ошибка или ответ HTTP оказался неудачным (код вне диапазона 200–299).

HTTP-заголовки отправлены​

ЗаголовокЗначение
Content-Typeapplication/json
x-goog-api-keyКлюч API проекта Firebase
x-firebase-gmpidИдентификатор проекта App Firebase

Структура тела запроса​

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

Поля variables и operationName опускаются в тексте, если они не указаны.

Управление ошибками​

Сетевые ошибки (IOException, SocketTimeoutException и т. д.) фиксируются блоком catch(Exception) и протоколируются Log.e("DataConnect", ...). В этом случае метод возвращает null. Ошибки HTTP (ответ с кодом вне диапазона 200–299) считываются из errorStream соединения, а также регистрируются перед возвратом null.