يمكنك السماح للمستخدمين بالمصادقة من خلال Firebase باستخدام موفّري OAuth مثل Yahoo من خلال دمج تسجيل الدخول عبر OAuth العام المستند إلى الويب في تطبيقك باستخدام حزمة تطوير البرامج (SDK) لمنصّة Firebase لتنفيذ عملية تسجيل الدخول من البداية إلى النهاية نظرًا لأن هذا التدفق يتطلب استخدام حِزم تطوير البرامج (SDK) لمنصة Firebase المستندة إلى الهاتف، فلا تتوافق إلا مع نظامَي التشغيل Android ومنصات Apple.
قبل البدء
قبل أن تتمكّن من استخدام Firebase Authentication، عليك إجراء ما يلي:
سجِّل مشروعك على Unity واضبطه لاستخدام Firebase.
إذا كان مشروعك في Unity يستخدم Firebase حاليًا، يكون تسجيلها وإعدادها لمنصة Firebase
وإذا لم يكن لديك مشروع Unity، يمكنك تنزيل نموذج تطبيق.
أضِف حزمة تطوير البرامج (SDK) لنظام التشغيل Unity Firebase (خاصةً
FirebaseAuth.unitypackage
) إلى لمشروع Unity الخاص بك.
تجدر الإشارة إلى أنّ إضافة منصة Firebase إلى مشروع Unity تتضمّن مهامًا في كلّ من وحدة تحكّم Firebase وفي مشروع Unity المفتوح (على سبيل المثال، يمكنك تنزيل ملفات تهيئة Firebase من وحدة التحكم، ثم نقل إلى مشروع Unity).
الوصول إلى الصف Firebase.Auth.FirebaseAuth
الفئة FirebaseAuth
هي مدخل جميع طلبات البيانات من واجهة برمجة التطبيقات.
ويمكن الوصول إليه من خلال FirebaseAuth.DefaultInstance.
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
معالجة عملية تسجيل الدخول باستخدام حزمة تطوير البرامج (SDK) لمنصّة Firebase
لمعالجة عملية تسجيل الدخول باستخدام حزمة تطوير البرامج (SDK) لمنصّة Firebase، اتّبِع الخطوات التالية:
إنشاء مثيل لـ
FederatedOAuthProviderData
تم ضبطه باستخدام معرف المزود المناسب لـ Yahoo.Firebase.Auth.FederatedOAuthProviderData providerData = new Firebase.Auth.FederatedOAuthProviderData(); providerData.ProviderId = Firebase.Auth.YahooAuthProvider.ProviderId;
اختياري: تحديد مَعلمات OAuth المخصَّصة الإضافية التي تريد الإرسال باستخدام طلب OAuth.
providerData.CustomParameters = new Dictionary<string,string>; // Prompt user to re-authenticate to Yahoo. providerData.CustomParameters.Add("prompt", "login"); // Localize to French. providerData.CustomParameters.Add("language", "fr");
بالنسبة إلى المعلمات التي تدعمها Yahoo، راجع مستندات Yahoo OAuth. تجدر الإشارة إلى أنّه لا يمكنك تمرير المَعلمات المطلوبة في Firebase مع
custom_parameters()
هذه المَعلمات هي client_id redirect_uri وresponse_type وscope وstate.اختياري: يمكنك تحديد نطاقات OAuth 2.0 الإضافية التي تتجاوز
profile
email
الذي تريد طلبه من مزوِّد المصادقة. إذا كان الوصول إلى بيانات المستخدم الخاصة من واجهات برمجة تطبيقات Yahoo، فيجب طلب أذونات لواجهات برمجة تطبيقات Yahoo API ضمن أذونات واجهة برمجة التطبيقات في وحدة تحكّم المطوّرين في Yahoo. يجب أن تتطابق نطاقات OAuth المطلوبة تمامًا مع الإعدادات مسبقًا في أذونات واجهة برمجة التطبيقات الخاصة بالتطبيق. على سبيل المثال، إذا كانت قراءة/كتابة يتم طلب الوصول إلى جهات اتصال المستخدم ويتم ضبطه مسبقًا في واجهة برمجة التطبيقات الخاصة بالتطبيق يجب تمريرsdct-w
بدلاً من نطاق OAuth للقراءة فقطsdct-r
وإلا، فسيفشل التدفق وسيظهر خطأ في المستخدم النهائي.providerData.Scopes = new List<string>(); // Request access to Yahoo Mail API. providerData.Scopes.Add("mail-r"); // This must be preconfigured in the app's API permissions. providerData.Scopes.Add("sdct-w");
لمزيد من المعلومات، يُرجى الرجوع إلى مستندات نطاقات Yahoo.
بعد ضبط بيانات مزوِّد الخدمة، يمكنك استخدامها لإنشاء OAuthProvider.
// Construct a FederatedOAuthProvider for use in Auth methods. Firebase.Auth.FederatedOAuthProvider provider = new Firebase.Auth.FederatedOAuthProvider(); provider.SetProviderData(providerData);
يمكنك المصادقة مع Firebase باستخدام عنصر موفّر المصادقة. لاحظ أنه على عكس عمليات FirebaseAuth الأخرى، سيتحكم هذا في واجهة المستخدم من خلال فرقعة عرض ويب يمكن للمستخدم من خلاله إدخال بيانات الاعتماد.
لبدء عملية تسجيل الدخول، يمكنك الاتصال بالرقم
SignInAndRetrieveDataWithCredentialAsync
:
<<../_includes/_sign_in_with_provider_unity.md>>>
بينما تركز الأمثلة أعلاه على تدفقات تسجيل الدخول، لديك أيضًا القدرة على ربط موفر Yahoo بمستخدم حالي باستخدام
LinkWithProviderAsync
على سبيل المثال، يمكنك ربط عدة مواقع مقدمي الخدمة للمستخدم نفسه مما يسمح لهم بتسجيل الدخول باستخدام أي منهما.user.LinkWithProviderAsync(provider).ContinueOnMainThread(task => { if (task.IsCanceled) { Debug.LogError("LinkWithProviderAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("LinkWithProviderAsync encountered an error: " + task.Exception); return; } Firebase.Auth.AuthResult authResult = task.Result; Firebase.Auth.FirebaseUser user = authResult.User; Debug.LogFormat("User linked successfully: {0} ({1})", user.DisplayName, user.UserId); });
يمكن استخدام النمط نفسه مع
ReauthenticateWithProviderAsync
التي يمكن استخدامها لاسترداد بيانات اعتماد جديدة للعمليات الحساسة التي تتطلب معلومات تسجيل دخول حديثة.user.ReauthenticateWithProviderAsync(provider).ContinueOnMainThread(task => { if (task.IsCanceled) { Debug.LogError("ReauthenticateWithProviderAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError( "ReauthenticateWithProviderAsync encountered an error: " + task.Exception); return; } Firebase.Auth.AuthResult authResult = task.Result; Firebase.Auth.FirebaseUser user = authResult.User; Debug.LogFormat("User reauthenticated successfully: {0} ({1})", user.DisplayName, user.UserId); });
إعدادات متقدّمة: معالجة عملية تسجيل الدخول يدويًا
وعلى عكس موفِّري OAuth الآخرين الذين يتوافقون مع Firebase مثل Google وFacebook وTwitter، حيث يمكن تسجيل الدخول مباشرةً باستخدام رمز الدخول OAuth مستندة إلى بيانات الاعتماد، فإن مصادقة Firebase لا تدعم نفس الإمكانية مثل Yahoo نظرًا لعدم قدرة Firebase خادم المصادقة للتحقُّق من جمهور رموز الدخول عبر بروتوكول OAuth في Yahoo. ويعد ذلك من المتطلبات الأمنية المهمة وقد يكشف عن التطبيقات إعادة تشغيل الهجمات الإلكترونية من خلال رمز دخول Yahoo OAuth الذي تم الحصول عليه من يمكن استخدام مشروع واحد (المرفق) لتسجيل الدخول إلى مشروع آخر (الضحية). بدلاً من ذلك، توفر مصادقة Firebase إمكانية التعامل مع تدفق OAuth بالكامل تبادل رمز التفويض باستخدام معرّف وسر عميل OAuth في "وحدة تحكُّم Firebase" بما أنّه لا يمكن استخدام رمز التفويض إلّا إلى جانب معرِّف أو سر عميل أو رمز تفويض التي تم الحصول عليها لمشروع ما مع مشروع آخر.
فإذا كان يلزم استخدام هؤلاء المزودين في بيئات غير متوافقة، ومكتبة OAuth التابعة لجهة خارجية مصادقة Firebase المخصَّصة استخدامها. يجب استخدام بروتوكول المصادقة الأول للمصادقة مع مقدِّم الخدمة. وأخيرًا استبدال بيانات اعتماد موفر الخدمة برمز مخصص.
الخطوات التالية
بعد تسجيل المستخدم الدخول لأول مرة، يتم إنشاء حساب مستخدم جديد المرتبطة ببيانات الاعتماد - أي اسم المستخدم وكلمة المرور، أو الرقم أو معلومات مقدم المصادقة - المستخدم الذي سجّل الدخول باستخدامه. هذا الجديد كجزء من مشروع Firebase، ويمكن استخدامه لتحديد مستخدم في كل تطبيق في مشروعك، بغض النظر عن كيفية تسجيل دخوله.
-
في تطبيقاتك، يمكنك الحصول على معلومات الملف الشخصي الأساسية للمستخدم من كائن
Firebase.Auth.FirebaseUser
:Firebase.Auth.FirebaseUser user = auth.CurrentUser; if (user != null) { string name = user.DisplayName; string email = user.Email; System.Uri photo_url = user.PhotoUrl; // The user's Id, unique to the Firebase project. // Do NOT use this value to authenticate with your backend server, if you // have one; use User.TokenAsync() instead. string uid = user.UserId; }
في Firebase Realtime Database وCloud Storage قواعد الأمان، تتيح لك الحصول على معرّف المستخدم الفريد للمستخدم الذي سجّل الدخول من المتغير
auth
، واستخدامها للتحكم في البيانات التي يمكن للمستخدم الوصول إليها
يمكنك السماح للمستخدمين بتسجيل الدخول إلى تطبيقك باستخدام طرق مصادقة متعددة. موفِّري خدمة المصادقة من خلال ربط بيانات اعتماد موفر المصادقة حساب مستخدم حالي
لتسجيل خروج مستخدم، اتصل بالرقم
SignOut()
:
auth.SignOut();