OAuth 2.0 للتطبيقات المتوافقة مع الأجهزة الجوّالة وأجهزة الكمبيوتر المكتبي

يوضّح هذا المستند كيف تستخدم التطبيقات المثبَّتة على أجهزة مثل الهواتف والأجهزة اللوحية وأجهزة الكمبيوتر نقاط نهاية OAuth 2.0 من Google للسماح بالوصول إلى YouTube Data API.

يتيح بروتوكول OAuth 2.0 للمستخدمين مشاركة بيانات محدَّدة مع أحد التطبيقات والحفاظ على خصوصية أسماء المستخدمين وكلمات المرور والمعلومات الأخرى. على سبيل المثال، يمكن أن يستخدم تطبيق OAuth 2.0 للحصول على إذن باسترداد بيانات قناة على YouTube.

يتم توزيع التطبيقات المثبَّتة على الأجهزة الفردية، ويُفترض أنّ هذه التطبيقات لا يمكنها الحفاظ على الأسرار. ويمكنهم الوصول إلى واجهات برمجة التطبيقات من Google أثناء استخدام التطبيق أو عندما يكون التطبيق يعمل في الخلفية.

يشبه مسار التفويض هذا المسار المستخدَم في تطبيقات خادم الويب. ويكمن الاختلاف الرئيسي في أنّ التطبيقات المثبَّتة يجب أن تفتح متصفّح النظام وتوفّر معرّف موارد منتظمًا محليًا لإعادة التوجيه من أجل التعامل مع الردود الواردة من خادم التفويض التابع لـ Google.

المكتبات والعينات

بالنسبة إلى تطبيقات الأجهزة الجوّالة، ننصحك باستخدام أحدث إصدار من مكتبة Google Identity Services الأصلية على Android ومكتبة Google Sign-In الأصلية على iOS. تتعامل هذه المكتبات مع تفويض المستخدمين، كما أنّها أسهل في التنفيذ من البروتوكول ذي المستوى الأدنى الموضّح هنا.

بالنسبة إلى التطبيقات التي تعمل على أجهزة لا تتوافق مع متصفّح النظام أو التي تتطلّب إدخال بيانات محدودة، مثل أجهزة التلفزيون أو وحدات تحكّم الألعاب أو الكاميرات أو الطابعات، يمكنك الاطّلاع على OAuth 2.0 لأجهزة التلفزيون والأجهزة الأخرى أو تسجيل الدخول على أجهزة التلفزيون والأجهزة التي تتطلّب إدخال بيانات محدودة.

المتطلبات الأساسية

تفعيل واجهات برمجة التطبيقات لمشروعك

يجب تفعيل واجهات Google APIs في API Consoleلأي تطبيق يستدعي هذه الواجهات.

لتفعيل واجهة برمجة تطبيقات لمشروعك، اتّبِع الخطوات التالية:

  1. Open the API Library في Google API Console
  2. If prompted, select a project, or create a new one.
  3. استخدِم صفحة "المكتبة" للعثور على YouTube Data API وتفعيلها. ابحث عن أي واجهات برمجة تطبيقات أخرى سيستخدمها تطبيقك وفعِّلها أيضًا.

إنشاء بيانات اعتماد التفويض

يجب أن يتضمّن أي تطبيق يستخدم OAuth 2.0 للوصول إلى Google APIs بيانات اعتماد تفويض تحدّد التطبيق لخادم OAuth 2.0 من Google. توضّح الخطوات التالية كيفية إنشاء بيانات اعتماد لمشروعك. يمكن لتطبيقاتك بعد ذلك استخدام بيانات الاعتماد للوصول إلى واجهات برمجة التطبيقات التي فعّلتها لهذا المشروع.

  1. Go to the Credentials page.
  2. انقر على إنشاء عميل.
  3. توضّح الأقسام التالية أنواع العملاء التي يتيحها خادم التفويض من Google. اختَر نوع العميل الذي يُنصح به لتطبيقك، وأدخِل اسمًا لعميل OAuth، واضبط الحقول الأخرى في النموذج حسب الاقتضاء.
Android
  1. اختَر نوع التطبيق Android.
  2. أدخِل اسمًا لعميل OAuth. يتم عرض هذا الاسم في مشروعك لتحديد العميل.
  3. أدخِل اسم حزمة تطبيق Android. يتم تحديد هذه القيمة في السمة package للعنصر <manifest> في ملف بيان تطبيقك.
  4. أدخِل الملف المرجعي لشهادة التوقيع SHA-1 الخاصة بتوزيع التطبيق.
    • إذا كان تطبيقك يستخدم ميزة "توقيع التطبيق" من Google Play، انسخ الملف المرجعي SHA-1 من صفحة "توقيع التطبيق" في Play Console.
    • إذا كنت تدير ملف تخزين المفاتيح ومفاتيح التوقيع، استخدِم أداة keytool المضمّنة في Java لعرض معلومات الشهادة بتنسيق يمكن قراءته. انسخ قيمة SHA1 في قسم Certificate fingerprints من ناتج keytool. لمزيد من المعلومات، راجِع مقالة مصادقة العميل في مستندات Google APIs لنظام Android.
  5. (اختياري) أثبِت ملكية تطبيق Android.
  6. انقر على إنشاء.
iOS
  1. اختَر نوع تطبيق iOS.
  2. أدخِل اسمًا لعميل OAuth. يتم عرض هذا الاسم في مشروعك لتحديد العميل.
  3. أدخِل معرّف الحزمة لتطبيقك. معرّف الحزمة هو قيمة المفتاح CFBundleIdentifier في ملف الموارد الخاص بقائمة خصائص معلومات تطبيقك (info.plist). يتم عرض القيمة بشكل شائع في اللوحة General أو اللوحة Signing & Capabilities في أداة تعديل مشاريع Xcode. يظهر معرّف الحزمة أيضًا في قسم "المعلومات العامة" ضمن صفحة "معلومات التطبيق" الخاصة بالتطبيق على موقع App Store Connect الإلكتروني من Apple.

    تأكَّد من استخدام رقم تعريف الحزمة الصحيح لتطبيقك، لأنّه لن يكون بإمكانك تغييره إذا كنت تستخدم ميزة App Check.

  4. (اختياري)

    أدخِل رقم تعريف تطبيقك في App Store إذا كان التطبيق منشورًا في متجر Apple App Store. معرّف المتجر هو سلسلة رقمية مضمّنة في كل عنوان URL في Apple App Store.

    1. افتح تطبيق Apple App Store على جهاز iOS أو iPadOS.
    2. ابحث عن تطبيقك.
    3. انقر على زر المشاركة (مربع وسهم للأعلى).
    4. انقر على نسخ الرابط.
    5. الصِق الرابط في محرِّر نصوص. معرّف App Store هو الجزء الأخير من عنوان URL.

      مثلاً: https://apps.apple.com/app/google/id284815942

  5. (اختياري)

    أدخِل معرّف الفريق. يمكنك الاطّلاع على العثور على معرّف الفريق في مستندات حساب المطوّر على Apple للحصول على مزيد من المعلومات.

    ملاحظة: يجب ملء حقل "رقم تعريف الفريق" إذا كنت تريد تفعيل App Check للعميل.
  6. (اختياري)

    فعِّل خدمة App Check لتطبيق iOS. عند تفعيل خدمة App Check، يتم استخدام خدمة App Attest من Apple للتحقّق من أنّ طلبات OAuth 2.0 الواردة من عميل OAuth حقيقية ومن تطبيقك، ما يساعد في تقليل خطر انتحال هوية التطبيق. مزيد من المعلومات عن تفعيل خدمة App Check لتطبيق iOS

  7. انقر على إنشاء.
UWP
  1. اختَر نوع التطبيق النظام الأساسي العام لـ Windows.
  2. أدخِل اسمًا لعميل OAuth. يتم عرض هذا الاسم في مشروعك لتحديد العميل.
  3. أدخِل معرّف Microsoft Store الخاص بتطبيقك والمؤلّف من 12 حرفًا. يمكنك العثور على هذه القيمة في Microsoft Partner Center في صفحة هوية التطبيق ضمن قسم &quot;إدارة التطبيقات&quot;.
  4. انقر على إنشاء.

بالنسبة إلى تطبيقات UWP، يجب ألا يزيد طول مخطط URI المخصّص عن 39 حرفًا.

تحديد نطاقات الوصول

تتيح النطاقات لتطبيقك طلب الوصول إلى الموارد التي يحتاجها فقط، كما تتيح للمستخدمين التحكّم في مقدار الوصول الذي يمنحونه لتطبيقك. وبالتالي، قد تكون هناك علاقة عكسية بين عدد النطاقات المطلوبة واحتمالية الحصول على موافقة المستخدم.

قبل البدء في تنفيذ تفويض OAuth 2.0، ننصحك بتحديد النطاقات التي سيحتاج تطبيقك إلى إذن للوصول إليها.

يستخدم الإصدار 3 من YouTube Data API النطاقات التالية:

النطاق الوصف
https://www.googleapis.com/auth/youtube إدارة حسابك في YouTube
https://www.googleapis.com/auth/youtube.channel-memberships.creator الاطّلاع على قائمة بأعضاء القناة النشطين حاليًا ومستواهم الحالي وتاريخ انضمامهم
https://www.googleapis.com/auth/youtube.force-ssl الاطّلاع على فيديوهاتك على YouTube وتقييماتها وتعليقاتها وترجماتها وكذلك تعديلها وحذفها نهائيًا
https://www.googleapis.com/auth/youtube.readonly عرض حسابك في YouTube
https://www.googleapis.com/auth/youtube.upload إدارة فيديوهات YouTube
https://www.googleapis.com/auth/youtubepartner عرض وإدارة أصولك والمحتوى المرتبط بها على YouTube
https://www.googleapis.com/auth/youtubepartner-channel-audit عرض معلومات خاصة عن قناتك على YouTube ذات صلة أثناء عملية تدقيق شريك YouTube

يحتوي مستند نطاقات واجهة برمجة التطبيقات OAuth 2.0 على قائمة كاملة بالنطاقات التي يمكنك استخدامها للوصول إلى Google APIs.

الحصول على رموز الدخول عبر OAuth 2.0

توضّح الخطوات التالية كيفية تفاعل تطبيقك مع خادم OAuth 2.0 من Google للحصول على موافقة المستخدم على تنفيذ طلب API بالنيابة عنه. يجب أن يحصل تطبيقك على هذه الموافقة قبل أن يتمكّن من تنفيذ طلب Google API يتطلّب إذن المستخدم.

الخطوة 1: إنشاء أداة التحقّق من الرمز والتحدّي

تتيح Google استخدام بروتوكول مفتاح الحماية لتبادل الرموز (PKCE) لجعل عملية تثبيت التطبيق أكثر أمانًا. يتم إنشاء أداة التحقّق من الرمز الفريد لكل طلب ترخيص، ويتم إرسال قيمتها المحوّلة، والتي تُسمى "code_challenge"، إلى خادم الترخيص للحصول على رمز الترخيص.

إنشاء أداة التحقّق من الرمز

code_verifier هي سلسلة عشوائية مشفّرة ذات إنتروبيا عالية تستخدم الأحرف غير المحجوزة [A-Z] / [a-z] / [0-9] / "-" / "." / "_" / "~"، ويبلغ الحد الأدنى لطولها 43 حرفًا والحد الأقصى 128 حرفًا.

يجب أن يحتوي رمز التحقّق على إنتروبيا كافية تجعل من غير العملي تخمين القيمة.

إنشاء تحدّي الرمز

تتوفّر طريقتان لإنشاء تحدّي الرمز.

طُرق إنشاء تحدّي الرمز
S256 (يُنصح بها) تمثّل تحدّي الرمز تجزئة SHA256 للرمز التحقّق من الصحة، ويتم ترميزها باستخدام Base64URL (بدون إضافة أي مساحة).
code_challenge = BASE64URL-ENCODE(SHA256(ASCII(code_verifier)))
plain تمثّل قيمة تحدّي الرمز القيمة نفسها التي تم إنشاؤها أعلاه لبرنامج التحقّق من الرمز.
code_challenge = code_verifier

الخطوة 2: إرسال طلب إلى خادم OAuth 2.0 من Google

للحصول على تفويض المستخدم، أرسِل طلبًا إلى خادم التفويض في Google على https://accounts.google.com/o/oauth2/v2/auth. تعالج نقطة النهاية هذه عملية البحث عن الجلسة النشطة، وتصادق على المستخدم، وتحصل على موافقته. لا يمكن الوصول إلى نقطة النهاية إلا عبر SSL، وهي ترفض اتصالات HTTP (غير SSL).

يتيح خادم التفويض مَعلمات سلسلة طلب البحث التالية للتطبيقات المثبَّتة:

المعلمات
client_id مطلوب

معرّف العميل لتطبيقك يمكنك العثور على هذه القيمة في .

redirect_uri مطلوب

تحدّد هذه السمة الطريقة التي يرسل بها خادم التفويض من Google ردًا إلى تطبيقك. تتوفّر عدة خيارات لإعادة التوجيه للتطبيقات المثبَّتة، ويجب إعداد بيانات اعتماد التفويض مع الأخذ في الاعتبار طريقة معيّنة لإعادة التوجيه.

يجب أن تتطابق القيمة تمامًا مع أحد معرّفات الموارد المنتظمة (URI) المسموح بها لإعادة التوجيه الخاصة بعميل OAuth 2.0 الذي أعددته في الخاص بعميلك. إذا لم تتطابق هذه القيمة مع معرّف URI معتمد، سيظهر لك الخطأ redirect_uri_mismatch.

يعرض الجدول أدناه قيمة المَعلمة redirect_uri المناسبة لكل طريقة:

قيم redirect_uri
مخطّط معرّف الموارد المنتظم (URI) المخصّص com.example.app:redirect_uri_path

أو

com.googleusercontent.apps.123:redirect_uri_path
  • com.example.app هي صيغة نظام أسماء النطاقات العكسية لنطاق يخضع لتحكّمك. يجب أن يحتوي المخطط المخصّص على نقطة ليكون صالحًا.
  • com.googleusercontent.apps.123 هو تدوين نظام أسماء النطاقات العكسي لمعرّف العميل.
  • redirect_uri_path هو مكوّن مسار اختياري، مثل /oauth2redirect. يُرجى العِلم أنّ المسار يجب أن يبدأ بشرطة مائلة واحدة، وهو ما يختلف عن عناوين URL العادية التي تستخدم بروتوكول HTTP.
عنوان IP للاسترجاع http://127.0.0.1:port أو http://[::1]:port

اطلب من منصتك الحصول على عنوان IP المناسب الخاص بالشبكة المحلية وابدأ برنامج استماع HTTP على منفذ عشوائي متاح. استبدِل port برقم المنفذ الفعلي الذي يستمع إليه تطبيقك.

يُرجى العِلم أنّ خيار إعادة التوجيه إلى عنوان IP الخاص بالشبكة المحلية في التطبيقات

response_type مطلوب

تحدِّد هذه السمة ما إذا كانت نقطة نهاية Google OAuth 2.0 تعرض رمز تفويض.

اضبط قيمة المَعلمة على code للتطبيقات المثبَّتة.

scope مطلوب

قائمة مفصولة بمسافات تتضمّن النطاقات التي تحدّد الموارد التي يمكن لتطبيقك الوصول إليها نيابةً عن المستخدم. تُعلم هذه القيم شاشة الموافقة التي تعرضها Google للمستخدم.

تتيح النطاقات لتطبيقك طلب الوصول إلى الموارد التي يحتاج إليها فقط، كما تتيح للمستخدمين التحكّم في مقدار الوصول الذي يمنحونه لتطبيقك. وبالتالي، هناك علاقة عكسية بين عدد النطاقات المطلوبة واحتمالية الحصول على موافقة المستخدم.

يستخدم الإصدار 3 من YouTube Data API النطاقات التالية:

النطاق الوصف
https://www.googleapis.com/auth/youtube إدارة حسابك في YouTube
https://www.googleapis.com/auth/youtube.channel-memberships.creator الاطّلاع على قائمة بأعضاء القناة النشطين حاليًا ومستواهم الحالي وتاريخ انضمامهم
https://www.googleapis.com/auth/youtube.force-ssl الاطّلاع على فيديوهاتك على YouTube وتقييماتها وتعليقاتها وترجماتها وكذلك تعديلها وحذفها نهائيًا
https://www.googleapis.com/auth/youtube.readonly عرض حسابك في YouTube
https://www.googleapis.com/auth/youtube.upload إدارة فيديوهات YouTube
https://www.googleapis.com/auth/youtubepartner عرض وإدارة أصولك والمحتوى المرتبط بها على YouTube
https://www.googleapis.com/auth/youtubepartner-channel-audit عرض معلومات خاصة عن قناتك على YouTube ذات صلة أثناء عملية تدقيق شريك YouTube

يوفّر مستند نطاقات واجهة برمجة التطبيقات OAuth 2.0 قائمة كاملة بالنطاقات التي يمكنك استخدامها للوصول إلى Google APIs.

code_challenge مقترَح

تحدّد هذه السمة code_verifier مرمَّزًا سيتم استخدامه كتحدٍّ من جهة الخادم أثناء تبادل رمز التفويض. راجِع قسم إنشاء تحدّي باستخدام الرمز أعلاه للحصول على مزيد من المعلومات.

code_challenge_method مقترَح

تحدّد هذه السمة الطريقة المستخدَمة لترميز code_verifier التي سيتم استخدامها أثناء تبادل رمز التفويض. يجب استخدام هذه المَعلمة مع المَعلمة code_challenge الموضّحة أعلاه. إذا لم تكن السمة code_challenge_method متوفّرة في الطلب الذي يتضمّن code_challenge، تكون القيمة التلقائية للسمة code_challenge_method هي plain. القيمتان المسموح بإدراجهما لهذه المَعلمة هما S256 أو plain.

state مقترَح

تحدّد هذه السمة أي قيمة سلسلة تستخدمها التطبيقات للحفاظ على الحالة بين طلب التفويض والاستجابة من خادم التفويض. يعرض الخادم القيمة نفسها التي ترسلها كزوج name=value في معرّف جزء عنوان URL (#) لـ redirect_uri بعد أن يوافق المستخدم على طلب الوصول الذي يقدّمه تطبيقك أو يرفضه.

يمكنك استخدام هذه المَعلمة لعدّة أغراض، مثل توجيه المستخدم إلى المرجع الصحيح في تطبيقك، وإرسال أرقام عشوائية، والحدّ من التزوير في الطلبات الواردة من مواقع إلكترونية مختلفة. بما أنّه يمكن تخمين redirect_uri، فإنّ استخدام قيمة state يمكن أن يزيد من تأكّدك من أنّ الاتصال الوارد هو نتيجة لطلب مصادقة. إذا أنشأت سلسلة عشوائية أو ترميزًا لتجزئة ملف تعريف ارتباط أو قيمة أخرى تسجّل حالة العميل، يمكنك التحقّق من صحة الردّ لضمان أنّ الطلب والردّ نشآ في المتصفّح نفسه، ما يوفّر الحماية من هجمات مثل تزوير الطلبات على مستوى المواقع الإلكترونية. راجِع مستندات اتصال OpenID للاطّلاع على مثال حول كيفية إنشاء رمز مميّز من النوع state وتأكيده.

login_hint اختياريّ

إذا كان تطبيقك يعرف المستخدم الذي يحاول إثبات هويته، يمكنه استخدام هذه المَعلمة لتقديم تلميح إلى خادم مصادقة Google. يستخدم الخادم التلميح لتبسيط عملية تسجيل الدخول، إما عن طريق ملء حقل البريد الإلكتروني مسبقًا في نموذج تسجيل الدخول أو عن طريق اختيار جلسة تسجيل الدخول المتعدد المناسبة.

اضبط قيمة المَعلمة على عنوان بريد إلكتروني أو معرّف sub، وهو يساوي معرّف Google الخاص بالمستخدم.

أمثلة على عناوين URL للتفويض

تعرض علامات التبويب أدناه نماذج لعناوين URL الخاصة بالتفويض لخيارات عناوين URI المختلفة لإعادة التوجيه.

يطلب كل عنوان URL إذن الوصول إلى نطاق يسمح باسترداد بيانات المستخدم على YouTube.

تتطابق عناوين URL باستثناء قيمة المَعلمة redirect_uri. تحتوي عناوين URL أيضًا على المَعلمتَين المطلوبتَين response_type وclient_id، بالإضافة إلى المَعلمة الاختيارية state. يحتوي كل عنوان URL على فواصل أسطر ومسافات لتسهيل قراءته.

مخطط معرّف الموارد المنتظم (URI) المخصّص

https://accounts.google.com/o/oauth2/v2/auth?
 scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyoutube.force-ssl&
 response_type=code&
 state=security_token%3D138r5719ru3e1%26url%3Dhttps%3A%2F%2Foauth2.example.com%2Ftoken&
 redirect_uri=com.example.app%3A/oauth2redirect&
 client_id=client_id

عنوان IP للاسترجاع

https://accounts.google.com/o/oauth2/v2/auth?
 scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyoutube.force-ssl&
 response_type=code&
 state=security_token%3D138r5719ru3e1%26url%3Dhttps%3A%2F%2Foauth2.example.com%2Ftoken&
 redirect_uri=http%3A//127.0.0.1%3A9004&
 client_id=client_id

الخطوة 3: تطلب Google من المستخدم الموافقة

في هذه الخطوة، يقرّر المستخدم ما إذا كان سيمنح تطبيقك إذن الوصول المطلوب. في هذه المرحلة، يعرض Google نافذة موافقة تعرض اسم تطبيقك وخدمات Google API التي يطلب الإذن بالوصول إليها باستخدام بيانات اعتماد تفويض المستخدم وملخّصًا لنطاقات الوصول التي سيتم منحها. يمكن للمستخدم بعد ذلك الموافقة على منح إذن الوصول إلى نطاق واحد أو أكثر يطلبه تطبيقك أو رفض الطلب.

لا يحتاج تطبيقك إلى اتّخاذ أي إجراء في هذه المرحلة، إذ ينتظر الردّ من خادم OAuth 2.0 التابع لـ Google الذي يوضّح ما إذا تم منح أي إذن بالوصول. يتم توضيح هذا الرد في الخطوة التالية.

الأخطاء

قد تعرض الطلبات المُرسَلة إلى نقطة نهاية تفويض OAuth 2.0 من Google رسائل خطأ موجّهة إلى المستخدمين بدلاً من عمليات المصادقة والتفويض المتوقّعة. في ما يلي رموز الأخطاء الشائعة والحلول المقترَحة.

admin_policy_enforced

لا يمكن لحساب Google منح الإذن باستخدام نطاق واحد أو أكثر من النطاقات المطلوبة بسبب سياسات مشرف Google Workspace. راجِع مقالة المساعدة في &quot;مشرف Google Workspace&quot; بعنوان التحكّم في اختيار التطبيقات الخارجية والتطبيقات الداخلية التي يمكنها الوصول إلى بيانات Google Workspace لمزيد من المعلومات حول كيفية حظر المشرف للوصول إلى جميع النطاقات أو النطاقات الحسّاسة والمقيّدة إلى أن يتم منح إذن الوصول بشكل صريح إلى معرّف عميل OAuth.

disallowed_useragent

يتم عرض نقطة نهاية التفويض داخل وكيل مستخدم مضمّن غير مسموح به بموجب سياسات OAuth 2.0 من Google.

Android

قد تظهر رسالة الخطأ هذه لمطوّري تطبيقات Android عند فتح طلبات التفويض في android.webkit.WebView. على المطوّرين بدلاً من ذلك استخدام مكتبات Android، مثل تسجيل الدخول باستخدام حساب Google على Android أو AppAuth لنظام التشغيل Android من OpenID Foundation.

قد يواجه مطوّرو الويب هذا الخطأ عندما يفتح تطبيق Android رابطًا عامًا على الويب في وكيل مستخدم مضمّن، وينتقل المستخدم إلى نقطة نهاية تفويض بروتوكول OAuth 2.0 من Google من موقعك الإلكتروني. على المطوّرين السماح بفتح الروابط العامة في معالج الروابط التلقائي لنظام التشغيل، والذي يتضمّن كلاً من معالجات روابط تطبيقات Android أو تطبيق المتصفّح التلقائي. وتُعد مكتبة علامات التبويب المخصّصة في Android أيضًا خيارًا متاحًا.

iOS

قد يواجه مطوّرو تطبيقات iOS وmacOS هذا الخطأ عند فتح طلبات الحصول على إذن في WKWebView. على المطوّرين بدلاً من ذلك استخدام مكتبات iOS، مثل Google Sign-In for iOS أو AppAuth for iOS من OpenID Foundation.

قد يواجه مطوّرو الويب هذا الخطأ عندما يفتح تطبيق على iOS أو macOS رابط ويب عامًا في وكيل مستخدم مضمّن، وينتقِل المستخدم إلى نقطة نهاية تفويض بروتوكول OAuth 2.0 من Google من موقعك الإلكتروني. على المطوّرين السماح بفتح الروابط العامة في معالج الروابط التلقائي لنظام التشغيل، والذي يتضمّن معالجات الروابط العامة أو تطبيق المتصفّح التلقائي. وتُعد مكتبة SFSafariViewController خيارًا متاحًا أيضًا.

org_internal

إنّ رقم تعريف عميل OAuth في الطلب هو جزء من مشروع يحدّ من الوصول إلى حسابات Google في مؤسسة Google Cloud محدّدة. لمزيد من المعلومات حول خيار الإعداد هذا، راجِع قسم نوع المستخدم في مقالة المساعدة حول إعداد شاشة موافقة OAuth.

deleted_client

تم حذف عميل OAuth المستخدَم لتقديم الطلب. يمكن أن تتم عملية الحذف يدويًا أو تلقائيًا في حالة العملاء غير النشطين . يمكن استعادة العملاء المحذوفين في غضون 30 يومًا من الحذف. مزيد من المعلومات

invalid_grant

إذا كنت تستخدم رمز التحقّق من الصحة والتحدّي، تكون المَعلمة code_callenge غير صالحة أو غير متوفّرة. تأكَّد من ضبط المَعلمة code_challenge بشكلٍ صحيح.

عند إعادة تحميل رمز دخول، قد تكون انتهت صلاحية الرمز أو تم إبطاله. أثبِت هوية المستخدم مرة أخرى واطلب موافقته للحصول على رموز مميزة جديدة. إذا استمر ظهور هذا الخطأ، تأكَّد من إعداد تطبيقك بشكل صحيح ومن استخدام الرموز المميزة والمَعلمات الصحيحة في طلبك. بخلاف ذلك، قد يكون قد تم حذف حساب المستخدم أو إيقافه.

redirect_uri_mismatch

لا يتطابق redirect_uri الذي تم تمريره في طلب التفويض مع معرّف الموارد المنتظم (URI) لإعادة التوجيه المصرّح به لمعرّف عميل OAuth. راجِع معرّفات الموارد المنتظمة (URI) المعتمَدة لإعادة التوجيه في .

قد يكون redirect_uri الذي تم تمريره غير صالح لنوع العميل.

قد تشير المَعلمة redirect_uri إلى مسار OAuth خارج النطاق (OOB) الذي تم إيقافه نهائيًا ولم يعُد متاحًا. راجِع دليل نقل البيانات لتعديل عملية الدمج.

invalid_request

حدث خطأ في الطلب الذي قدّمته. قد يرجع ذلك إلى عدة أسباب:

  • لم يتم تنسيق الطلب بشكلٍ صحيح
  • لم يتضمّن الطلب المَعلمات المطلوبة
  • يستخدم الطلب طريقة لا تسمح بها Google لمنح إذن الوصول. التأكّد من أنّ عملية دمج OAuth تستخدم طريقة دمج مقترَحة
  • يتم استخدام مخطط مخصّص لمعرّف الموارد المنتظم (URI) لإعادة التوجيه : إذا ظهرت لك رسالة الخطأ مخطط معرّف الموارد المنتظم (URI) المخصّص غير متاح على تطبيقات Chrome أو مخطط معرّف الموارد المنتظم (URI) المخصّص غير مفعّل لعميل Android، يعني ذلك أنّك تستخدم مخطط معرّف موارد منتظم (URI) مخصّصًا غير متاح على تطبيقات Chrome ويكون غير مفعّل تلقائيًا على Android. مزيد من المعلومات حول بدائل مخطط URI المخصّص

الخطوة 4: التعامل مع استجابة خادم OAuth 2.0

تعتمد الطريقة التي يتلقّى بها تطبيقك ردّ التفويض على مخطط معرّف الموارد المنتظم (URI) لإعادة التوجيه الذي يستخدمه. وبغض النظر عن المخطط، سيتضمّن الردّ إما رمز تخويل (code) أو خطأ (error). على سبيل المثال، يشير error=access_denied إلى أنّ المستخدم رفض الطلب.

إذا منح المستخدِم الإذن لتطبيقك، يمكنك استبدال رمز التفويض برمز دخول ورمز مميّز لإعادة التحميل كما هو موضّح في الخطوة التالية.

الخطوة 5: تبديل رمز التفويض برموز مميّزة لإعادة التحميل والدخول

لتبديل رمز تفويض برمز دخول، اتّصِل بنقطة النهاية https://oauth2.googleapis.com/token واضبط المَعلمات التالية:

الحقول
client_id معرّف العميل الذي تم الحصول عليه من
client_secret سر العميل الذي تم الحصول عليه من
code رمز التفويض الذي تم عرضه في الطلب الأوّلي
code_verifier رمز التحقّق الذي أنشأته في الخطوة 1
grant_type وفقًا لما هو محدّد في مواصفات OAuth 2.0، يجب ضبط قيمة هذا الحقل على authorization_code.
redirect_uri أحد معرّفات الموارد المنتظمة (URI) لإعادة التوجيه المُدرَجة في مشروعك في لـ client_id المحدّد

يعرض المقتطف التالي نموذجًا لطلب:

POST /token HTTP/1.1
Host: oauth2.googleapis.com
Content-Type: application/x-www-form-urlencoded

code=4/P7q7W91a-oMsCeLvIaQm6bTrgtp7&
client_id=your_client_id&
client_secret=your_client_secret&
redirect_uri=http://127.0.0.1:9004&
grant_type=authorization_code

تستجيب Google لهذا الطلب من خلال عرض عنصر JSON يحتوي على رمز مميز قصير الأمد للوصول ورمز مميز لإعادة التحميل.

يتضمّن الرد الحقول التالية:

الحقول
access_token الرمز المميز الذي يرسله تطبيقك للموافقة على طلب Google API.
expires_in تمثّل هذه السمة مدة صلاحية رمز الدخول المتبقية بالثواني.
id_token ملاحظة: لا يتم عرض هذه السمة إلا إذا تضمّن طلبك نطاق معرّف، مثل openid أو profile أو email. القيمة هي رمز JSON المميّز للويب (JWT) يحتوي على معلومات هوية موقَّعة رقميًا حول المستخدم.
refresh_token رمز مميّز يمكنك استخدامه للحصول على رمز مميّز جديد للوصول تكون رموز إعادة التحميل صالحة إلى أن يبطل المستخدم إذن الوصول أو تنتهي صلاحية رمز إعادة التحميل. يُرجى العِلم أنّه يتم دائمًا عرض الرموز المميزة لإعادة التحميل للتطبيقات المثبَّتة.
refresh_token_expires_in تعرض هذه السمة مدة صلاحية الرمز المميز لإعادة التحميل المتبقية بالثواني. لا يتم ضبط هذه القيمة إلا عندما يمنح المستخدم إذن الوصول المستند إلى الوقت.
scope نطاقات الوصول التي يمنحها access_token معبَّر عنها كقائمة من السلاسل الحساسة لحالة الأحرف والمفصولة بمسافات.
token_type تمثّل هذه السمة نوع الرمز المميّز الذي يتم عرضه. في الوقت الحالي، يتم دائمًا ضبط قيمة هذا الحقل على Bearer.

يعرض المقتطف التالي نموذجًا للردّ:

{
  "access_token": "1/fFAGRNJru1FTz70BzhT3Zg",
  "expires_in": 3920,
  "token_type": "Bearer",
  "scope": "https://www.googleapis.com/auth/youtube.force-ssl https://www.googleapis.com/auth/calendar.readonly",
  "refresh_token": "1//xEoDL4iW3cxlI7yDbSRFYNG01kVKM2C-259HOF2aQbI"
}

الخطوة 6: التحقّق من النطاقات التي منحها المستخدمون

عند طلب أذونات متعددة (نطاقات)، قد لا يمنح المستخدمون تطبيقك إذن الوصول إلى جميعها. يجب أن يتحقّق تطبيقك من النطاقات التي تم منحها فعليًا وأن يتعامل بشكل سليم مع الحالات التي يتم فيها رفض بعض الأذونات، وذلك عادةً عن طريق إيقاف الميزات التي تعتمد على تلك النطاقات المرفوضة.

ومع ذلك، هناك استثناءات. تتجاوز تطبيقات Google Workspace Enterprise التي تتضمّن تفويضًا على مستوى النطاق، أو التطبيقات التي تم وضع علامة موثوق به عليها، شاشة طلب الموافقة على الأذونات التفصيلية. بالنسبة إلى هذه التطبيقات، لن تظهر للمستخدمين شاشة الموافقة على الأذونات التفصيلية. بدلاً من ذلك، سيحصل تطبيقك على جميع النطاقات المطلوبة أو لن يحصل على أي منها.

لمزيد من المعلومات التفصيلية، يُرجى الاطّلاع على كيفية التعامل مع الأذونات الدقيقة.

للتحقّق مما إذا كان المستخدم قد منح تطبيقك إذن الوصول إلى نطاق معيّن، افحص الحقل scope في ردّ رمز الدخول. نطاقات الوصول التي يمنحها الرمز access_token، ويتم التعبير عنها كقائمة من السلاسل الحساسة لحالة الأحرف والمفصولة بمسافات

على سبيل المثال، يشير نموذج استجابة رمز الدخول التالي إلى أنّ المستخدم قد منح تطبيقك إذن الوصول إلى نشاط Drive وأحداث التقويم للقراءة فقط:

  {
    "access_token": "1/fFAGRNJru1FTz70BzhT3Zg",
    "expires_in": 3920,
    "token_type": "Bearer",
    "scope": "https://www.googleapis.com/auth/youtube.force-ssl https://www.googleapis.com/auth/calendar.readonly",
    "refresh_token": "1//xEoDL4iW3cxlI7yDbSRFYNG01kVKM2C-259HOF2aQbI"
  }

استدعاء Google APIs

بعد أن يحصل تطبيقك على رمز مميز للوصول، يمكنك استخدام الرمز المميز لإجراء طلبات إلى إحدى واجهات برمجة التطبيقات من Google نيابةً عن حساب مستخدم معيّن إذا تم منح نطاقات الوصول التي تتطلّبها واجهة برمجة التطبيقات. لإجراء ذلك، يجب تضمين رمز الدخول في طلب إلى واجهة برمجة التطبيقات من خلال تضمين مَعلمة طلب بحث access_token أو قيمة Bearer في عنوان HTTP Authorization. عند الإمكان، من الأفضل استخدام عنوان HTTP لأنّ سلاسل طلب البحث تكون عادةً مرئية في سجلات الخادم. في معظم الحالات، يمكنك استخدام مكتبة برامج العميل لإعداد طلباتك إلى واجهات Google API (على سبيل المثال، عند طلب YouTube Live Streaming API).

يُرجى العِلم أنّ واجهة YouTube Live Streaming API لا تتيح مسار حساب الخدمة. بما أنّه لا يمكن ربط حساب خدمة بحساب على YouTube، ستؤدي محاولات تفويض الطلبات باستخدام هذا المسار إلى ظهور الخطأ NoLinkedYouTubeAccount.

يمكنك تجربة جميع واجهات Google APIs والاطّلاع على نطاقاتها في مساحة بروتوكول OAuth 2.0.

أمثلة على طلبات HTTP GET

قد يبدو طلب إلى نقطة النهاية liveBroadcasts.list (أي YouTube Live Streaming API) باستخدام عنوان HTTP Authorization: Bearer على النحو التالي. يُرجى العِلم أنّه عليك تحديد رمز الدخول الخاص بك:

GET /youtube/v3/liveBroadcasts?part=id%2Csnippet&mine=true HTTP/1.1
Host: www.googleapis.com
Authorization: Bearer access_token

في ما يلي طلب موجّه إلى واجهة برمجة التطبيقات نفسها للمستخدم الذي تمّت المصادقة عليه باستخدام مَعلمة سلسلة طلب البحث access_token:

GET https://www.googleapis.com/youtube/v3/liveBroadcasts?access_token=access_token&part=id%2Csnippet&mine=true

أمثلة على curl

يمكنك اختبار هذه الأوامر باستخدام تطبيق سطر الأوامر curl. في ما يلي مثال يستخدم خيار عنوان HTTP (الخيار المفضّل):

curl -H "Authorization: Bearer access_token" https://www.googleapis.com/youtube/v3/liveBroadcasts?part=id%2Csnippet&mine=true

أو يمكنك استخدام خيار مَعلمة سلسلة طلب البحث:

curl https://www.googleapis.com/youtube/v3/liveBroadcasts?access_token=access_token&part=id%2Csnippet&mine=true

إعادة تحميل رمز دخول

تنتهي صلاحية رموز الدخول بشكل دوري وتصبح بيانات اعتماد غير صالحة لطلب بيانات من واجهة برمجة التطبيقات ذات الصلة. يمكنك إعادة تحميل رمز الدخول بدون مطالبة المستخدم بالحصول على إذن (حتى عندما لا يكون المستخدم متوفّرًا) إذا طلبت الوصول بلا إنترنت إلى النطاقات المرتبطة بالرمز.

لتحديث رمز الدخول، يرسل تطبيقك طلب HTTPS POST إلى خادم التفويض في Google (https://oauth2.googleapis.com/token) يتضمّن المَعلمات التالية:

الحقول
client_id معرّف العميل الذي تم الحصول عليه من API Console.
client_secret سرّ العميل الذي تم الحصول عليه من API Console. (لا ينطبق client_secret على الطلبات الواردة من العملاء المسجّلين كتطبيقات Android أو iOS أو Chrome).
grant_type كما هو محدّد في مواصفات OAuth 2.0، يجب ضبط قيمة هذا الحقل على refresh_token.
refresh_token الرمز المميز لإعادة التحميل الذي تم عرضه من عملية تبديل رمز التفويض

يعرض المقتطف التالي نموذجًا لطلب:

POST /token HTTP/1.1
Host: oauth2.googleapis.com
Content-Type: application/x-www-form-urlencoded

client_id=your_client_id&
client_secret=your_client_secret&
refresh_token=refresh_token&
grant_type=refresh_token

ما دام المستخدم لم يبطل إذن الوصول الممنوح للتطبيق، سيعرض خادم الرموز المميزة عنصر JSON يتضمّن رمزًا مميزًا جديدًا للوصول. يعرض المقتطف التالي نموذجًا لردّ:

{
  "access_token": "1/fFAGRNJru1FTz70BzhT3Zg",
  "expires_in": 3920,
  "scope": "https://www.googleapis.com/auth/drive.metadata.readonly https://www.googleapis.com/auth/calendar.readonly",
  "token_type": "Bearer"
}

يُرجى العِلم أنّ هناك حدودًا لعدد رموز التحديث التي سيتم إصدارها، وهي حدّ واحد لكل مجموعة من العملاء والمستخدمين، وحدّ آخر لكل مستخدم على مستوى جميع العملاء. عليك حفظ رموز إعادة التحميل في مساحة تخزين طويلة الأمد ومواصلة استخدامها طالما أنّها تظل صالحة. إذا كان تطبيقك يطلب عددًا كبيرًا جدًا من رموز التحديث، قد يواجه هذه الحدود، وفي هذه الحالة سيتوقف عمل رموز التحديث الأقدم.

إبطال رمز مميّز

في بعض الحالات، قد يرغب المستخدم في إبطال إذن الوصول الذي تم منحه لتطبيق. يمكن للمستخدم إبطال إذن الوصول من خلال الانتقال إلى إعدادات الحساب. للحصول على مزيد من المعلومات، يمكنك الاطّلاع على قسم إزالة إمكانية وصول موقع إلكتروني أو تطبيق في مستند الدعم "المواقع الإلكترونية والتطبيقات الخارجية التي يمكنها الوصول إلى حسابك".

من الممكن أيضًا أن يلغي تطبيق إذن الوصول الذي تم منحه له بشكل آلي. ويكون الإبطال آليًا مهمًا في الحالات التي يلغي فيها المستخدم اشتراكه أو يزيل تطبيقًا أو تتغير فيها بشكل كبير موارد واجهة برمجة التطبيقات التي يتطلبها التطبيق. بعبارة أخرى، يمكن أن يتضمّن جزء من عملية الإزالة طلبًا من خلال واجهة برمجة التطبيقات لضمان إزالة الأذونات التي تم منحها للتطبيق سابقًا.

لإبطال رمز مميّز آليًا، يرسل تطبيقك طلبًا إلى https://oauth2.googleapis.com/revoke ويتضمّن الرمز المميّز كمعلَمة:

curl -d -X -POST --header "Content-type:application/x-www-form-urlencoded" \
        https://oauth2.googleapis.com/revoke?token={token}

يمكن أن يكون الرمز المميز رمز دخول أو رمز إعادة تحميل. إذا كان الرمز المميز هو رمز دخول وكان يتضمّن رمزًا مميزًا لإعادة التحميل، سيتم أيضًا إبطال رمز إعادة التحميل.

إذا تمت معالجة الإلغاء بنجاح، سيكون رمز حالة HTTP للاستجابة هو 200. في حال حدوث خطأ، يتم عرض رمز حالة HTTP 400 مع رمز خطأ.

طُرق إعادة توجيه التطبيقات

مخطط معرّف الموارد المنتظم (URI) المخصّص (Android وiOS وUWP)

المخططات المخصّصة لمعرّفات الموارد المنتظمة (URI) هي شكل من أشكال الربط بصفحات في التطبيق تستخدم مخططًا محدّدًا مخصّصًا لفتح تطبيقك.

بديل لاستخدام مخططات معرّفات URI المخصّصة على Android

استخدِم البديل المقترَح الذي يقدّم استجابة OAuth 2.0 مباشرةً إلى تطبيقك، ما يلغي الحاجة إلى معرّف موارد منتظم لإعادة التوجيه.

كيفية نقل البيانات إلى مكتبة Google Identity Services لنظام التشغيل Android

إذا كنت تستخدم مخططًا مخصّصًا لدمج بروتوكول OAuth على Android، عليك إكمال الإجراءات التالية لنقل البيانات بالكامل إلى مكتبة Google Identity Services Android المقترَحة:

  1. عدِّل الرمز البرمجي لاستخدام مكتبة Google Identity Services لنظام التشغيل Android.
  2. أوقِف إمكانية استخدام المخطط المخصّص في Google Cloud Console.

توضّح الخطوات التالية كيفية نقل البيانات إلى "مكتبة خدمات Google Identity" لنظام التشغيل Android:

  1. عدِّل الرمز البرمجي لاستخدام مكتبة Google Identity Services لنظام التشغيل Android:
    1. افحص الرمز لتحديد المكان الذي ترسل فيه طلبًا إلى خادم OAuth 2.0 من Google. في حال استخدام مخطط مخصّص، سيبدو طلبك على النحو التالي:
        https://accounts.google.com/o/oauth2/v2/auth?
        scope=<SCOPES>&
        response_type=code&
        &state=<STATE>&
        redirect_uri=com.example.app:/oauth2redirect&
        client_id=<CLIENT_ID>
        
      com.example.app:/oauth2redirect هو معرّف الموارد المنتظم (URI) الخاص بإعادة التوجيه والمستند إلى المخطط المخصّص في المثال أعلاه. راجِع تعريف المَعلمة redirect_uri للحصول على مزيد من التفاصيل حول تنسيق قيمة مخطط URI المخصّص.
    2. دوِّن مَعلمتَي الطلب scope وclient_id اللتين ستحتاج إليهما لضبط حزمة تطوير البرامج (SDK) الخاصة بخدمة "تسجيل الدخول باستخدام Google".
    3. اتّبِع تعليمات منح الإذن بالوصول إلى بيانات مستخدمي Google لإعداد حزمة تطوير البرامج (SDK). يمكنك تخطّي خطوة إعداد مشروعك على Google Cloud Console لأنّك ستعيد استخدام client_id الذي حصلت عليه في الخطوة السابقة.
    4. اتّبِع التعليمات الواردة في مقالة طلب الأذونات المطلوبة لإجراءات المستخدم. يتضمّن ذلك الخطوات التالية:
      1. طلب الأذونات من المستخدم
      2. استخدِم طريقة getServerAuthCode لاسترداد رمز مصادقة للنطاقات التي تطلب الإذن بالوصول إليها.
      3. أرسِل رمز المصادقة إلى الخلفية في تطبيقك لاستبداله برمز مميّز للدخول ورمز مميّز لإعادة التحميل.
      4. استخدِم رمز الدخول الذي تم استرداده لإجراء طلبات إلى Google APIs بالنيابة عن المستخدم.
  2. أوقِف إمكانية استخدام المخطط المخصّص في "وحدة تحكّم Google API":
    1. انتقِل إلى قائمة بيانات اعتماد OAuth 2.0 واختَر عميل Android.
    2. انتقِل إلى قسم الإعدادات المتقدّمة، وأزِل العلامة من المربّع تفعيل نظام معرّف موارد منتظم (URI) مخصّص، ثم انقر على حفظ لإيقاف إمكانية استخدام نظام معرّف موارد منتظم (URI) مخصّص.

تفعيل مخطط URI مخصّص

إذا لم يكن البديل المقترَح مناسبًا لك، يمكنك تفعيل مخططات URI المخصّصة لعميل Android باتّباع التعليمات أدناه:
  1. انتقِل إلى قائمة بيانات اعتماد OAuth 2.0 واختَر عميل Android.
  2. انتقِل إلى قسم الإعدادات المتقدّمة، وضَع علامة في مربّع الاختيار تفعيل مخطط URI المخصّص، ثم انقر على حفظ لتفعيل إمكانية استخدام مخطط URI المخصّص.

بديل لاستخدام المخططات المخصّصة لمعرّفات الموارد المنتظمة (URI) في تطبيقات Chrome

استخدِم Chrome Identity API التي تنقل استجابة OAuth 2.0 مباشرةً إلى تطبيقك، ما يلغي الحاجة إلى معرّف موارد منتظم لإعادة التوجيه.

عنوان IP للاسترجاع (أجهزة macOS وLinux وWindows المكتبية)

لتلقّي رمز التفويض باستخدام عنوان URL هذا، يجب أن يكون تطبيقك يستمع إلى خادم الويب المحلي. يمكن إجراء ذلك على العديد من المنصات، ولكن ليس على جميعها. ومع ذلك، إذا كانت المنصة تتيح ذلك، ننصحك باستخدام هذه الآلية للحصول على رمز التفويض.

عندما يتلقّى تطبيقك استجابة التفويض، يجب أن يستجيب من خلال عرض صفحة HTML تطلب من المستخدم إغلاق المتصفّح والعودة إلى تطبيقك، وذلك لضمان أفضل تجربة استخدام.

الاستخدام المقترَح تطبيقات macOS وLinux وWindows على أجهزة الكمبيوتر (وليس تطبيقات Universal Windows Platform)
قيم النموذج اضبط نوع التطبيق على تطبيق متوافق مع الكمبيوتر المكتبي.

النسخ واللصق يدويًا (متوقّف نهائيًا)

حماية تطبيقاتك

إثبات ملكية التطبيق (Android وChrome)

يمكنك إثبات ملكية تطبيقك للحدّ من خطر انتحال هوية التطبيق.

Android

لإكمال عملية إثبات الملكية، يمكنك استخدام حساب المطوِّر على Google Play إذا كان لديك حساب وتم تسجيل تطبيقك على Google Play Console. يجب استيفاء المتطلبات التالية لإكمال عملية التحقّق بنجاح:

  • يجب أن يكون لديك تطبيق مسجَّل في Google Play Console يحمل اسم الحزمة نفسه وبصمة شهادة التوقيع SHA-1 نفسها التي يستخدمها برنامج OAuth على Android الذي تريد إكمال عملية التحقّق منه.
  • يجب أن يكون لديك إذن المشرف للتطبيق في Google Play Console. مزيد من المعلومات حول إدارة إذن الوصول في Google Play Console

في قسم إثبات ملكية التطبيق في تطبيق Android، انقر على الزر إثبات الملكية لإكمال عملية إثبات الملكية.

في حال نجاح عملية التحقّق، سيظهر إشعار يؤكّد نجاحها. وإلا، ستظهر رسالة خطأ.

لإصلاح عملية إثبات هوية تعذّر إتمامها، جرِّب ما يلي:

  • تأكَّد من أنّ التطبيق الذي تريد إثبات ملكيته هو تطبيق مسجَّل في Google Play Console.
  • تأكَّد من حصولك على إذن المشرف للتطبيق في Google Play Console.
Chrome

لإكمال عملية إثبات الملكية، عليك استخدام حساب المطوّر في "سوق Chrome الإلكتروني". يجب استيفاء المتطلبات التالية لإكمال عملية التحقّق بنجاح:

في قسم إثبات ملكية التطبيق في برنامج Chrome Extension، انقر على الزر إثبات الملكية لإكمال عملية إثبات الملكية.

ملاحظة: يُرجى الانتظار بضع دقائق قبل إكمال عملية إثبات الملكية بعد منح الإذن بالوصول إلى حسابك.

في حال نجاح عملية التحقّق، سيظهر إشعار يؤكّد نجاحها. وإلا، ستظهر رسالة خطأ.

لإصلاح عملية إثبات هوية تعذّر إتمامها، جرِّب ما يلي:

  • تأكَّد من توفّر عنصر مسجَّل في لوحة بيانات المطوّر في &quot;سوق Chrome الإلكتروني&quot; يحمل رقم تعريف العنصر نفسه الذي تستخدمه في إكمال عملية إثبات ملكية عميل OAuth الخاص بإضافة Chrome.
  • تأكَّد من أنّك ناشر للتطبيق، أي يجب أن تكون الناشر الفردي للتطبيق أو أحد أعضاء مجموعة الناشرين للتطبيق. مزيد من المعلومات عن إدارة إذن الوصول في "لوحة بيانات المطوّر" في "سوق Chrome الإلكتروني"
  • إذا كنت قد عدّلت قائمة الناشرين في المجموعة مؤخرًا، تأكَّد من مزامنة قائمة العضوية في المجموعة في &quot;لوحة بيانات المطوّرين&quot; في &quot;سوق Chrome الإلكتروني&quot;. مزيد من المعلومات حول مزامنة قائمة المشتركين لدى الناشر.

App Check (على أجهزة iOS فقط)

تساعد ميزة App Check في حماية تطبيقات iOS من الاستخدام غير المصرَّح به من خلال استخدام خدمة App Attest من Apple للتحقّق من أنّ الطلبات المُرسَلة إلى نقاط نهاية Google OAuth 2.0 مصدرها تطبيقاتك الأصلية. يساعد ذلك في تقليل مخاطر انتحال هوية التطبيق.

تفعيل App Check لعميل iOS

يجب استيفاء المتطلبات التالية لتفعيل App Check بنجاح على عميل iOS:
  • يجب تحديد معرّف فريق لعميل iOS.
  • يجب عدم استخدام حرف بدل في معرّف الحزمة لأنّه يمكن أن يؤدي إلى أكثر من تطبيق واحد، ما يعني أنّه يجب ألا يتضمّن معرّف الحزمة رمز النجمة (*).
لتفعيل ميزة App Check، فعِّل زر التبديل حماية عميل OAuth من إساءة الاستخدام باستخدام ميزة &quot;فحص التطبيقات من Firebase&quot; في عرض التعديل لعميل iOS.

بعد تفعيل App Check، ستبدأ في الاطّلاع على مقاييس متعلّقة بطلبات OAuth من عميلك في عرض التعديل الخاص بعميل OAuth. لن يتم حظر الطلبات الواردة من مصادر لم يتم التحقّق منها إلى أن تفرض استخدام App Check. يمكن أن تساعدك المعلومات الواردة في صفحة مراقبة المقاييس في تحديد الوقت المناسب لبدء تنفيذ السياسة.

قد تظهر لك أخطاء متعلّقة بميزة App Check عند تفعيلها لتطبيق iOS. لحلّ هذه الأخطاء، جرِّب ما يلي:

  • تأكَّد من أنّ معرّف الحزمة ومعرّف الفريق اللذين حدّدتهما صالحان.
  • تأكَّد من عدم استخدام حرف بدل لمعرّف الحزمة.

فرض استخدام App Check على عميل iOS

لا يؤدي تفعيل App Check لتطبيقك إلى حظر الطلبات غير المعروفة تلقائيًا. لتفعيل هذه الحماية، انتقِل إلى عرض التعديل في تطبيق iOS. ستظهر مقاييس App Check على يسار الصفحة ضمن قسم Google Identity لنظام التشغيل iOS. تتضمّن المقاييس المعلومات التالية:
  • عدد الطلبات التي تم التحقّق منها: الطلبات التي تتضمّن رمزًا مميزًا صالحًا من App Check. بعد تفعيل فرض استخدام App Check، لن تنجح سوى الطلبات في هذه الفئة.
  • عدد الطلبات التي لم يتم التحقّق منها: من المحتمل أن تكون طلبات قديمة من العملاء - طلبات لا تتضمّن رمزًا مميزًا من App Check، وقد تكون هذه الطلبات من إصدار قديم من تطبيقك لا يتضمّن عملية تنفيذ App Check.
  • عدد الطلبات التي لم يتم التحقّق منها: الطلبات ذات المصدر غير المعروف - الطلبات التي لا تتضمّن رمزًا مميزًا من App Check ولا يبدو أنّها واردة من تطبيقك.
  • عدد الطلبات التي لم يتم التحقّق منها: الطلبات غير الصالحة - الطلبات التي تتضمّن رمزًا مميزًا غير صالح من App Check، وقد تكون واردة من عميل غير موثوق يحاول انتحال هوية تطبيقك، أو من بيئات محاكاة.
راجِع هذه المقاييس لمعرفة كيف سيؤثّر فرض استخدام App Check في المستخدمين.

لفرض استخدام App Check، انقر على الزر فرض وأكِّد اختيارك. بعد تفعيل عملية التنفيذ، سيتم رفض جميع الطلبات التي لم يتم التحقّق منها من عميلك.

ملاحظة: بعد تفعيل خيار فرض القيود، قد يستغرق تطبيق التغييرات ما يصل إلى 15 دقيقة.

إيقاف فرض استخدام App Check على عميل iOS

سيؤدي عدم فرض استخدام App Check في تطبيقك إلى إيقاف الفرض، وسيسمح بجميع الطلبات الواردة من العميل إلى نقاط نهاية Google OAuth 2.0، بما في ذلك الطلبات التي لم يتم التحقّق منها.

لإيقاف فرض استخدام App Check على عميل iOS، انتقِل إلى عرض التعديل الخاص بعميل iOS وانقر على الزر إيقاف الفرض وأكِّد اختيارك.

ملاحظة: بعد إيقاف فرض استخدام App Check، قد يستغرق تطبيق التغييرات مدة تصل إلى 15 دقيقة.

إيقاف App Check لعميل iOS

سيؤدي إيقاف ميزة App Check لتطبيقك إلى إيقاف جميع عمليات المراقبة والتنفيذ التي تجريها هذه الميزة. ننصحك بعدم فرض استخدام App Check بدلاً من ذلك حتى تتمكّن من مواصلة تتبُّع المقاييس الخاصة بالعميل.

لإيقاف ميزة App Check لعميل iOS، انتقِل إلى عرض التعديل الخاص بعميل iOS وأوقِف زر التبديل حماية عميل OAuth من إساءة الاستخدام باستخدام ميزة App Check من Firebase.

ملاحظة: بعد إيقاف App Check، قد يستغرق تطبيق التغييرات مدة تصل إلى 15 دقيقة.

الوصول المستند إلى الوقت

يسمح الوصول المستند إلى الوقت للمستخدم بمنح تطبيقك الإذن بالوصول إلى بياناته لمدة محدودة لإكمال إجراء معيّن. تتوفّر إمكانية الوصول المستند إلى الوقت في منتجات Google محدّدة أثناء مسار الموافقة، ما يمنح المستخدمين خيار منح إذن الوصول لمدة محدودة. ومن الأمثلة على ذلك Data Portability API التي تتيح نقل البيانات لمرة واحدة.

عندما يمنح المستخدم تطبيقك إذن الوصول المستند إلى الوقت، ستنتهي صلاحية رمز إعادة التحميل بعد المدة المحدّدة. يُرجى العِلم أنّه قد يتم إبطال رموز التحديث قبل الموعد المحدّد في ظروف معيّنة، ويمكنك الاطّلاع على هذه الحالات للحصول على التفاصيل. يمثّل الحقل refresh_token_expires_in الذي تم عرضه في استجابة تبديل رمز التفويض الوقت المتبقي حتى تنتهي صلاحية رمز التحديث في هذه الحالات.

محتوى إضافي للقراءة

تحدّد أفضل الممارسات الحالية من IETF OAuth 2.0 للتطبيقات الأصلية العديد من أفضل الممارسات الموضّحة هنا.

تفعيل ميزة "الحماية العابرة للحساب"

من الخطوات الإضافية التي يجب اتّخاذها لحماية حسابات المستخدمين تنفيذ ميزة "الحماية على مستوى الحسابات" من خلال الاستفادة من خدمة "الحماية على مستوى الحسابات" من Google. تتيح لك هذه الخدمة الاشتراك في تلقّي إشعارات بشأن أحداث الأمان التي تقدّم معلومات لتطبيقك حول التغييرات الرئيسية التي تطرأ على حساب المستخدم. يمكنك بعد ذلك استخدام المعلومات لاتّخاذ إجراءات استنادًا إلى طريقة الردّ على الأحداث.

في ما يلي بعض الأمثلة على أنواع الأحداث التي ترسلها خدمة "الحماية على مستوى الحسابات" من Google إلى تطبيقك:

  • https://schemas.openid.net/secevent/risc/event-type/sessions-revoked
  • https://schemas.openid.net/secevent/oauth/event-type/token-revoked
  • https://schemas.openid.net/secevent/risc/event-type/account-disabled

يمكنك الاطّلاع على صفحة حماية حسابات المستخدمين باستخدام ميزة "الحماية العابرة للحساب" للحصول على مزيد من المعلومات حول كيفية تنفيذ ميزة "الحماية العابرة للحساب" والقائمة الكاملة بالأحداث المتاحة.