انتقل إلى المحتوى الرئيسي

مصادقة Firebase واتصال البيانات

مصادقة 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مفتاح واجهة برمجة تطبيقات مشروع Firebase
x-firebase-gmpidمعرف مشروع 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.