Skip to main content
اللاعب في Flock هو حساب واحد يمكن أن يحمل عدّة بيانات اعتماد. فقد يبدأ اللاعب نفسه بمعرّف جهاز، ثم يضيف بريدًا إلكترونيًا وكلمة مرور لاحقًا، ثم يربط Google بعد ذلك — وتسجيل الدخول بأيٍّ منها يصل إلى الحساب نفسه بالتقدّم نفسه. وهذا ما يجعل البدء بالجهاز أولًا آمنًا: يبدأ اللاعب فورًا دون نموذج تسجيل، ثم يربط بيانات اعتماد حقيقية حين يصبح مرتبطًا باللعبة، فيحتفظ بكل شيء إن فقد الجهاز.

أنواع بيانات الاعتماد

device_id وemail وgoogle وapple وfacebook وsteam وdiscord. ويمكن للاعب أن يحمل واحدًا من كل نوع على الأكثر — فربط حساب Google ثانٍ باللاعب نفسه يُرفض بدل أن يحلّ محلّ الأول بصمت.
يقع الربط في مزوّد المصادقة إلى جانب استدعاءات تسجيل الدخول، وكل دالة منه تتطلّب لاعبًا مسجَّل الدخول.
وهناك دالة لكل مزوّد — LinkEmailAsync وLinkDeviceAsync وLinkGoogleAsync وLinkAppleAsync وLinkFacebookAsync وLinkSteamAsync وLinkDiscordAsync — وكل منها يأخذ الرمز نفسه الذي يحصل عليه مسار تسجيل الدخول من تلك المنصّة. أما UnlinkAsync فتأخذ FlockCredentialProvider بدلًا من ذلك.وكل واحدة من هذه الدوال تُعيد قائمة بيانات الاعتماد كاملةً بعد التحديث، فيؤدّي الربط وفكّه دور التحديث أيضًا — ونادرًا ما تحتاج إلى استدعاء GetLinkedAccountsAsync مرة أخرى مباشرةً بعدها.ويحمل كل PlayerLinkedAccount الحقول Provider وProviderUserId وEmail وEmailVerified.
لا يستطيع اللاعب فكّ ربط آخر بيانات اعتماد لديه. فإزالتها تترك حسابًا لا يستطيع أحد تسجيل الدخول إليه، ولذلك يرفض الخادم ذلك بالرمز FlockErrorCode.PlayerCannotUnlinkLastCredential. عطِّل زر فكّ الربط حين تحتوي القائمة على مدخل واحد بدل أن يكتشف اللاعب ذلك على هيئة خطأ.
أخطاء يستحقّ التعامل معها بالاسم:
لا يوجد مسار لدمج الحسابات. فإن كانت بيانات الاعتماد تخصّ لاعبًا آخر، يفشل الربط بالرمز PlayerAccountAlreadyLinked — ولن تدمج Flock تقدّم لاعبَين معًا، إذ لا توجد إجابة عامة آمنة عن أيّ الحفظَين يفوز. قرّر داخل لعبتك ما الذي تعرضه: الإبقاء على الحساب الحالي، أو تسجيل الخروج والدخول إلى الآخر.
ولا تُخزَّن حالة بيانات الاعتماد مؤقتًا ولا تُصفّ في طابور عند انقطاع الاتصال — فهي حالة أمنية، والإجابة القديمة فيها أسوأ من عدم الإجابة. وكل استدعاء يذهب إلى الخادم.

إعادة تعيين كلمة المرور ببريد مرتبط

تعمل ResetPasswordAsync مع اللاعب الذي سجّل دخوله ببريد إلكتروني، وكذلك مع من ربط بريدًا إلكترونيًا خلال الجلسة الحالية. وتعرف حزمة التطوير ما هو مرتبط من قائمة بيانات الاعتماد، وهي لا تحفظ ذلك عمدًا بين عمليات التشغيل. لذا بعد استعادة جلسة، استدعِ GetLinkedAccountsAsync() مرة واحدة قبل عرض إعادة تعيين كلمة المرور — وإلا فلن تعلم حزمة التطوير بعدُ أن لدى اللاعب بريدًا يمكن إعادة تعيينه.
ربط الحسابات متاح في حزمة Unity. أما دعم Unreal فغير متاح بعد.
راجع اللاعبون والمصادقة للاطّلاع على استدعاءات تسجيل الدخول نفسها.