> ## Documentation Index
> Fetch the complete documentation index at: https://docs.qwacks.com/llms.txt
> Use this file to discover all available pages before exploring further.

# اللاعبون والمصادقة

> سجِّل دخول لاعبيك بالبريد الإلكتروني أو الجهاز أو Google أو Apple أو Steam — كل ذلك عبر حزمة التطوير.

export const Scope = ({children}) => <Info>
    <b>النطاق:</b> {children}
  </Info>;

تدعم Flock عدّة طرق لتسجيل دخول اللاعبين، جميعها عبر حزمة التطوير (SDK). راجع
[المصادقة](/ar/authentication) لمعرفة كيف تدير حزمة التطوير جلسات اللعبة واللاعب.

<Scope>اللاعبون هم حسابات داخل **لعبة** واحدة.</Scope>

<Tabs>
  <Tab title="لوحة التحكم">
    تصفّح لاعبي لعبتك وأدرهم من لوحة تحكم Flock — ابحث في الحسابات، واطّلع على الملفات
    الشخصية، وراجع مزوّدي الهوية المرتبطين.

    <Frame caption="تصفّح اللاعبين وأدرهم من لوحة تحكم Flock.">
      <img src="https://mintcdn.com/qwacks/TGGmq_oWzDacAqHl/images/guides/players.png?fit=max&auto=format&n=TGGmq_oWzDacAqHl&q=85&s=ff4f9ebbcedec476cfe2e0520f56086e" alt="قائمة اللاعبين" width="1440" height="866" data-path="images/guides/players.png" />
    </Frame>
  </Tab>

  <Tab title="Unity">
    كل طريقة هي استدعاء `LoginWith…Async` على `FlockClient.Instance.Authentication`، وجميعها
    **ترمي استثناءً** عند الفشل.

    <CardGroup cols={2}>
      <Card title="البريد الإلكتروني / كلمة المرور" icon="envelope">
        `LoginWithEmailAsync` — تسجيل الدخول التقليدي بحساب.
      </Card>

      <Card title="معرّف الجهاز" icon="mobile">
        `LoginWithDeviceAsync` — دخول ضيف بلا احتكاك مرتبط بالجهاز.
      </Card>

      <Card title="Google / Apple" icon="google">
        `LoginWithGoogleAsync` / `LoginWithAppleAsync` — هوية المنصّة.
      </Card>

      <Card title="Steam / Facebook / Discord" icon="steam">
        `LoginWithSteamAsync` و`LoginWithFacebookAsync` و`LoginWithDiscordAsync`.
      </Card>
    </CardGroup>

    ```csharp theme={null}
    await FlockClient.Instance.Authentication.LoginWithEmailAsync(email, password);
    Debug.Log($"Signed in as {FlockClient.Instance.CurrentPlayerId}");
    ```

    أما إنشاء الحساب فخطوة منفصلة — `RegisterWith…Async` — لأن تسجيل الدخول لا يُنشئ حسابًا.
    وتسجيل هوية لها حساب بالفعل ينجح بدل أن يفشل، فيمكنك توجيه اللاعب إلى تسجيل الدخول.
  </Tab>

  <Tab title="Unreal">
    كل طريقة عقدة غير متزامنة ضمن *Flock | Auth* بمنفذَي `On Success` و`On Failure`، أو استدعاء
    على مزوّد المصادقة في C++. وتستبدل حزمة التطوير بيانات الاعتماد التي أنتجتها حزمة تطوير
    منصّتك بجلسة Flock.

    ```cpp theme={null}
    UFlockSubsystem* Sdk = UFlockSubsystem::Get(this);
    Sdk->GetAuthProvider()->LoginWithEmail(Email, Password,
        [](TFlockResult<FFlockPlayerLoginResponse> Result)
        {
            if (Result.bSuccess) { /* Result.Value.PlayerId */ }
        });
    ```

    وخلافًا لـ Unity، **تسجيل الدخول وإنشاء الحساب استدعاءان منفصلان** — فإنشاء الحساب لا
    يُسجّل دخول اللاعب. أما Facebook وDiscord فللدخول فقط؛ إذ يجب أن يكون الحساب موجودًا سلفًا.

    وتسجيل هوية لها حساب بالفعل يُبلَّغ عنه على أنه *نجاح* مع ضبط `bAlreadyRegistered`، فتستطيع
    توجيه اللاعب إلى تسجيل الدخول بدل عرض رسالة فشل.

    راجع [دليل حزمة تطوير Unreal](/ar/sdk/unreal#authenticate-a-player) للاطّلاع على جدول
    المزوّدين الكامل.
  </Tab>
</Tabs>

<h2 id="sessions">
  الجلسات
</h2>

تُبقي حزمة التطوير اللاعب مسجَّل الدخول وتُجدّد جلسته تلقائيًا — فلن تتعامل مع الرموز أو انتهاء
صلاحيتها بنفسك أبدًا. وإذا احتاج اللاعب إلى إعادة المصادقة، تُطلق حزمة التطوير الحدث
`FlockEvents.OnAuthExpired`.
