نظرة عامة
تضيف ميزة الربط المبسّط المستند إلى OAuth في "تسجيل الدخول باستخدام حساب Google" خدمة "تسجيل الدخول باستخدام حساب Google" إلى الربط المستند إلى OAuth. يوفّر ذلك تجربة ربط سلسة لمستخدمي Google، ويتيح اختياريًا إنشاء حساب، ما يسمح للمستخدم بإنشاء حساب جديد على خدمتك باستخدام حسابه على Google.
لربط الحساب باستخدام OAuth و"تسجيل الدخول باستخدام Google"، اتّبِع الخطوات العامة التالية:
- أولاً، اطلب من المستخدم الموافقة على الوصول إلى ملفه الشخصي على Google.
- استخدِم المعلومات الواردة في ملفه الشخصي للتحقّق مما إذا كان حساب المستخدم متوفّرًا.
- بالنسبة إلى المستخدمين الحاليين، اربط الحسابات.
- إذا لم تتمكّن من العثور على مستخدم Google مطابق في نظام المصادقة، عليك التحقّق من صحة رمز التعريف المميّز الذي تلقّيته من Google. إذا كانت خدمتك تتيح إنشاء حساب، يمكنك إنشاء حساب مستخدم استنادًا إلى معلومات الملف الشخصي الواردة في رمز التعريف.
الشكل 1 ربط الحسابات على هاتف المستخدم باستخدام ميزة "ربط الحسابات بسلاسة"
الربط المبسّط: مسار OAuth + "تسجيل الدخول باستخدام حساب Google"
يوضّح مخطط التسلسل التالي تفاصيل التفاعلات بين المستخدم وGoogle ونقطة نهاية تبادل الرموز المميزة في ميزة "الربط السلس".
الأدوار والمسؤوليات
يحدّد الجدول التالي أدوار ومسؤوليات الجهات الفاعلة في مسار الربط المبسّط.
| الجهة الفاعلة / المكوّن | دور قائمة العناوين العمومية | المسؤوليات |
|---|---|---|
| تطبيق / خادم Google | عميل OAuth | الحصول على موافقة المستخدم على خدمة "تسجيل الدخول باستخدام Google"، وتمرير تأكيدات الهوية (JWT) إلى الخادم، وتخزين الرموز المميزة الناتجة بشكل آمن |
| نقطة نهاية تبادل الرموز المميزة | موفِّر الهوية / خادم التفويض | تتحقّق هذه الخدمة من صحة تأكيدات الهوية، وتبحث عن حسابات حالية، وتتعامل مع نوايا ربط الحساب المطلوبة (check وget) ونية create الاختيارية، وتصدر الرموز المميزة استنادًا إلى النوايا المطلوبة. |
| واجهة برمجة التطبيقات الخاصة بالخدمة | خادم الموارد | توفّر إمكانية الوصول إلى بيانات المستخدم عند تقديم رمز دخول صالح. |
متطلبات ميزة "الربط السلس"
- نفِّذ مسار ربط الحسابات الأساسي باستخدام OAuth. يجب أن تتيح خدمتك نقاط نهاية التفويض وتبادل الرموز المميزة المتوافقة مع بروتوكول OAuth 2.0.
- يجب أن تتوافق نقطة نهاية تبادل الرموز المميزة مع تأكيدات رمز JSON المميز للويب (JWT)، وأن تنفّذ الغرضَين المطلوبَين
checkوget، بالإضافة إلى الغرضcreateبشكل اختياري.
منطق اتخاذ القرار بشأن الربط المبسّط
تحدّد المنطق التالي كيفية استدعاء الأهداف أثناء مسار الربط المبسّط:
- هل لدى المستخدم حساب في نظام المصادقة؟ (يقرّر المستخدم
من خلال اختيار "نعم" أو "لا")
- نعم : هل يستخدم المستخدم عنوان البريد الإلكتروني المرتبط بحسابه على Google
لتسجيل الدخول إلى منصتك؟ (يقرّر المستخدم ذلك من خلال اختيار "نعم" أو "لا")
- YES : Does the user have a matching account in your authentication
system? (يتم استدعاء نية
checkللتأكيد)- نعم : يتم استدعاء
getintent ويتم ربط الحساب إذا تم عرض النتيجة بنجاح عند استدعاء get intent. - لا : إنشاء حساب جديد؟ (يقرّر المستخدم ذلك من خلال اختيار "نعم" أو "لا"،
ولا ينطبق ذلك إلا إذا كانت خدمتك تتيح إنشاء الحسابات)
- نعم : يتم استدعاء
createintent ويتم ربط الحساب إذا تم عرض intent الخاص بالإنشاء بنجاح. - لا : يتم تفعيل عملية الربط باستخدام OAuth، ويتم توجيه المستخدم إلى المتصفّح، ويُمنح المستخدم خيار الربط بعنوان بريد إلكتروني مختلف.
- نعم : يتم استدعاء
- نعم : يتم استدعاء
- لا : يتم تفعيل مسار ربط حساب OAuth، ويتم توجيه المستخدم إلى المتصفّح، ويُمنح المستخدم خيار الربط بعنوان بريد إلكتروني مختلف.
- YES : Does the user have a matching account in your authentication
system? (يتم استدعاء نية
- لا : هل لدى المستخدم حساب مطابق في نظام المصادقة؟ (يتم استدعاء نية
checkللتأكيد)- نعم : يتم استدعاء
getintent ويتم ربط الحساب إذا تم عرض get intent بنجاح. - NO : إذا كانت خدمتك تتيح إنشاء الحسابات، سيتم استدعاء
createintent وسيتم ربط الحساب إذا تم عرض create intent بنجاح. إذا لم يكن إنشاء الحساب متاحًا، يجب أن تعرض نقطة النهاية الخطأ HTTP 401 linking_error لتفعيل مسار الربط الاحتياطي باستخدام OAuth.
- نعم : يتم استدعاء
- نعم : هل يستخدم المستخدم عنوان البريد الإلكتروني المرتبط بحسابه على Google
لتسجيل الدخول إلى منصتك؟ (يقرّر المستخدم ذلك من خلال اختيار "نعم" أو "لا")
وصفة التنفيذ
يجب أن تنفّذ نقطة نهاية تبادل الرموز المميزة الغرضَين المطلوبَين check وget، ويمكنها اختياريًا تنفيذ الغرض create لتوفير ميزة "الربط السلس".
اتّبِع الخطوات التالية للتعامل مع النوايا المختلفة:
التحقّق من توفّر حساب مستخدم حالي (نية التحقّق)
تتصل Google بنقطة نهاية تبادل الرموز المميزة للتحقّق مما إذا كان مستخدم Google متوفّرًا في نظامك. لمعرفة تفاصيل المَعلمات، يُرجى الاطّلاع على الربط المبسّط لأهداف.
وصفة التنفيذ
للتعامل مع الغرض المطلوب check، اتّخِذ الإجراءات التالية:
التحقّق من صحة الطلب:
- تحقَّق من
client_idوclient_secretوgrant_type(يجب أن تكونurn:ietf:params:oauth:grant-type:jwt-bearer). - تحقَّق من صحة
assertion(رمز JWT) باستخدام المعايير الواردة في التحقّق من صحة رمز JWT.
- تحقَّق من
البحث عن مستخدم:
- تحقَّق مما إذا كان معرّف حساب Google (
sub) أو عنوان البريد الإلكتروني في رمز JWT يتطابق مع مستخدم في قاعدة البيانات.
- تحقَّق مما إذا كان معرّف حساب Google (
الردّ:
- في حال العثور على المحتوى: يجب عرض رمز HTTP
200 OKمع{"account_found": "true"}. - في حال عدم العثور على الملف: يجب عرض رمز حالة HTTP
404 Not Foundمع{"account_found": "false"}.
- في حال العثور على المحتوى: يجب عرض رمز HTTP
التعامل مع الربط التلقائي (الحصول على النية)
إذا كان الحساب متوفّرًا، تتصل Google بنقطة النهاية الخاصة بك باستخدام intent=get لاسترداد الرموز المميزة. لمعرفة تفاصيل المَعلمات، يُرجى الاطّلاع على الربط المبسّط
لأهداف.
وصفة التنفيذ
للتعامل مع الغرض المطلوب get، اتّخِذ الإجراءات التالية:
التحقّق من صحة الطلب:
- تحقَّق من
client_idوclient_secretوgrant_type. - تحقَّق من صحة
assertion(رمز JWT).
- تحقَّق من
البحث عن مستخدم:
- تأكَّد من أنّ المستخدم موجود باستخدام مطالبة
subأوemail.
- تأكَّد من أنّ المستخدم موجود باستخدام مطالبة
الردّ:
- في حال نجاح العملية: أنشئ
access_tokenوrefresh_tokenوexpires_inوأرسِلها في استجابة JSON (HTTP200 OK). - في حال تعذُّر الربط: اعرض رمز HTTP
401 Unauthorizedمع{"error": "linking_error"}وlogin_hintاختياريًا للرجوع إلى عملية الربط العادية باستخدام OAuth.
- في حال نجاح العملية: أنشئ
التعامل مع إنشاء الحسابات باستخدام ميزة "تسجيل الدخول باستخدام حساب Google" (نية الإنشاء)
إذا كانت خدمتك تتيح إنشاء الحسابات ولم يكُن هناك حساب حالي، ستتصل Google بنقطة النهاية باستخدام intent=create لإنشاء مستخدم جديد. لمعرفة تفاصيل المَعلمات،
يُرجى الاطّلاع على نيّات عملية الربط المبسّطة.
وصفة التنفيذ
للتعامل مع نية create الاختيارية، يُرجى تنفيذ الإجراءات التالية:
التحقّق من الطلب:
- التحقّق من
client_idوclient_secretوgrant_type - التحقّق من صحة
assertion(رمز JWT)
- التحقّق من
التحقّق من عدم وجود مستخدم:
- التحقّق مما إذا كان
subأوemailموجودًا في قاعدة البيانات - إذا كان المستخدم موجودًا: يتم عرض استجابة HTTP
401 Unauthorizedمع{"error": "linking_error", "login_hint": "USER_EMAIL"}لفرض الرجوع إلى عملية الربط باستخدام بروتوكول OAuth.
- التحقّق مما إذا كان
إنشاء حساب:
- استخدام طلبات
subوemailوnameوpictureمن رمز JWT لإنشاء سجلّ مستخدم جديد
- استخدام طلبات
الردّ:
- إنشاء الرموز وإرجاعها في استجابة JSON (استجابة HTTP
200 OK)
- إنشاء الرموز وإرجاعها في استجابة JSON (استجابة HTTP
الحصول على معرّف عميل Google API
سيُطلب منك تقديم معرّف العميل لواجهة Google API أثناء عملية التسجيل لربط الحساب. للحصول على معرّف عميل واجهة برمجة التطبيقات باستخدام المشروع الذي أنشأته أثناء إكمال خطوات ربط OAuth. لإجراء ذلك، يُرجى إكمال الخطوات التالية:
- انتقِل إلى صفحة العملاء.
أنشئ مشروعًا على Google APIs أو اختَر مشروعًا حاليًا.
إذا لم يكن مشروعك يتضمّن معرّف عميل من نوع تطبيق الويب، انقر على إنشاء عميل لإنشاء معرّف. تأكَّد من تضمين نطاق موقعك الإلكتروني في مربّع مصادر JavaScript المصرّح بها. عند إجراء اختبارات أو عمليات تطوير محلية، يجب إضافة كل من
http://localhostوhttp://localhost:<port_number>إلى حقل مصادر JavaScript المعتمَدة.
التحقّق من صحة عملية التنفيذ
يمكنك التحقّق من صحة التنفيذ باستخدام أداة مساحة بروتوكول OAuth 2.0.
في الأداة، اتّبِع الخطوات التالية:
- انقر على الإعداد لفتح نافذة "إعدادات OAuth 2.0".
- في حقل مسار OAuth، اختَر من جهة العميل.
- في حقل نقاط نهاية OAuth، اختَر مخصّص.
- حدِّد نقطة نهاية OAuth 2.0 ومعرّف العميل الذي خصّصته لـ Google في الحقلَين المناسبَين.
- في قسم الخطوة 1، لا تحدّد أي نطاقات Google. بدلاً من ذلك، اترك هذا الحقل فارغًا أو اكتب نطاقًا صالحًا لخادمك (أو سلسلة عشوائية إذا كنت لا تستخدم نطاقات OAuth). عند الانتهاء، انقر على تفويض واجهات برمجة التطبيقات.
- في القسمَين الخطوة 2 والخطوة 3، اتّبِع مسار OAuth 2.0 وتأكَّد من أنّ كل خطوة تعمل على النحو المطلوب.
يمكنك التحقّق من صحة عملية التنفيذ باستخدام أداة عرض توضيحي لربط حساب Google.
في الأداة، اتّبِع الخطوات التالية:
- انقر على الزر تسجيل الدخول باستخدام حساب Google.
- اختَر الحساب الذي تريد ربطه.
- أدخِل رقم تعريف الخدمة.
- يمكنك اختياريًا إدخال نطاق واحد أو أكثر ستطلب الوصول إليه.
- انقر على بدء العرض التوضيحي.
- أكِّد أنّه يمكنك الموافقة على طلب ربط الحساب ورفضه عندما يُطلب منك ذلك.
- تأكَّد من إعادة توجيهك إلى منصتك.