دليل مفاهيم OAuth و"تسجيل الدخول بحساب Google" (Dialogflow)

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

إنّ بروتوكول OAuth وتسجيل الدخول باستخدام حساب Google هو الحلّ المقترَح لربط الحساب في حال انطباق أيٍ من ينطبق ما يلي:

  • لديك إجراء يمتد إلى عدة منصات (على سبيل المثال، إذا كان الإجراء يعمل مع أحد تطبيقات Android).
  • لديك نظام مصادقة حالي وتريد السماح للمستخدمين ربط هوياتهم بحسابات غير تابعة لـ Google على سبيل المثال، إذا كنت تقدم برنامج ولاء ويريد التأكد من أن المستخدم لا يفقد النقاط المتراكمة على حساباتهم الحالية

للتأكّد من أنّ بروتوكول OAuth وتسجيل الدخول باستخدام حساب Google هو الحل المناسب لك، يمكنك الاطّلاع على اختيار نوع ربط الحساب

العبارات الرئيسية

قبل الاطّلاع على طريقة عمل OAuth وتسجيل الدخول بحساب Google، يُرجى الاطّلاع على وفقًا للبنود التالية:

  • الرمز المميّز لمعرّف Google: هو تأكيد موقَّع على هوية المستخدم التي تحتوي على المعلومات الأساسية في الملف الشخصي للمستخدم في Google (الاسم وعنوان البريد الإلكتروني صورة ملفك الشخصي). الرمز المميز لمعرف Google هو رمز JSON المميّز للويب (JWT). في ما يلي مثال على رمز مميّز تم فك ترميزه:
{
  "sub": 1234567890,        // The unique ID of the user's Google Account
  "iss": "https://accounts.google.com",        // The token's issuer
  "aud": "123-abc.apps.googleusercontent.com", // Client ID assigned to your Actions project
  "iat": 233366400,         // Unix timestamp of the token's creation time
  "exp": 233370000,         // Unix timestamp of the token's expiration time
  "name": "Jan Jansen",
  "given_name": "Jan",
  "family_name": "Jansen",
  "email": "jan@gmail.com", // If present, the user's email address
  "locale": "en_US"
}
  • هدف مساعد تسجيل الدخول إلى الحساب: هدف مساعد تتصل به لطلب تسجيل الدخول مسار ربط الحساب من "مساعد Google". لمزيد من المعلومات، يُرجى مراجعة تسجيل الدخول إلى الحساب:
    • سلسلة السياق: سلسلة مخصصة تضيفها إلى الحساب هدف مساعد تسجيل الدخول الذي يوضّح للمستخدم سبب ربط الحساب حساباتهم.
  • مسار رمز التفويض: وهو مسار OAuth 2.0 الذي يمكنك تنفيذه باستخدامه. OAuth + تسجيل الدخول إلى Google. يتطلب هذا التدفق نقطتَي نهاية:
    • نقطة نهاية التفويض: نقطة النهاية التي تعرض واجهة مستخدم تسجيل الدخول إلى المستخدمين الذين لم يسجّلوا الدخول من قبل يحفظ السجلّ الموافقة على طلب الوصول في شكل رمز تفويض قصير الأجل.
    • نقطة نهاية تبادل الرموز المميّزة: تكون نقطة النهاية هذه مسؤولة عن نوعَين. من عمليات التبادل:
      1. استبدال رمز تفويض برمز مميّز طويل الأمد لإعادة التحميل ورمز دخول قصير الأجل. ويحدث هذا التبادل عندما يستعمل المستخدم خلال عملية ربط الحسابات.
      2. يستبدل رمز مميز لإعادة التحميل طويل الأجل للحصول على إمكانية وصول قصير الأجل الرمز المميز. يحدث هذا التبادل عندما تحتاج Google إلى رمز دخول جديد لأنه قد انتهت صلاحيته.
  • مسار الرمز الضمني: مسار OAuth 2.0 الذي يمكنك تنفيذه باستخدام OAuth + تسجيل الدخول إلى Google. لا يتطلب هذا التدفق سوى نقطة نهاية التفويض. وأثناء هذه العملية، تفتح Google نقطة نهاية التفويض في حساب المتصفح. إذا تم تسجيل الدخول بنجاح، يتم إرجاع رمز دخول طويل الأجل إلى Google. يتم الآن تضمين رمز الدخول هذا في كل طلب يتم إرساله من "مساعد Google" للانتقال إلى المهمّة الخاصة بك.
  • رمز الدخول: هو رمز مميز يفوض خدمتك بالوصول إلى أجزاء من بيانات المستخدم. تكون رموز الدخول مرتبطة بكل مستخدم فردي.
  • الرمز المميّز لإعادة التحميل: هو رمز مميّز يتم استبداله برمز دخول جديد بعد انتهت صلاحية رمز الدخول قصير الأجل.

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

لاستخدام نوع ربط OAuth و"تسجيل الدخول باستخدام حساب Google"، ستحتاج إلى ما يلي:

  • خادم OAuth 2
  • نقطة نهاية تبادل الرموز المميّزة

    ويجب توسيع نقطة نهاية تبادل الرموز المميّزة لإتاحة إمكانية استخدام بروتوكولات الربط التلقائي وإنشاء الحساب من الرمز المميز للتعريف (أي إضافة المعلمتين intent=get وintent=create في الطلبات إلى نقطة النهاية هذه).

آلية العمل

يصف هذا القسم المسار العام لـ OAuth وتسجيل الدخول باستخدام حساب Google. يصف القسم التالي تدفقات OAuth وGSI المسارات المختلفة التي يمكن أن تحدث استنادًا إلى أ) سواء قمت بتمكين أو تعطيل إنشاء حساب عبر الصوت و ب) سواء كنت تستخدم الحساب مسار رمز التفويض.

يأتي التدفق الأساسي على النحو التالي:

  1. يطلب الإجراء الخاص بك من المستخدم الموافقة على وصوله إلى ملفه الشخصي على Google.
  2. بعد أن يمنح المستخدم موافقته، يتلقّى الإجراء الخاص بك رمزًا مميّزًا لمعرّف Google. يحتوي على معلومات الملف الشخصي للمستخدم في حساب Google.
  3. يجب التحقّق من صحة الرمز المميّز وفك ترميزه لقراءة محتوى الملف الشخصي.
  4. يستخدم الإجراء الخاص بك هذا الرمز المميّز للتحقّق مما إذا كان الملف الشخصي للمستخدم في حساب Google. وجود معلومات في نظامك.
    1. إذا حدث ذلك، فهذا يعني أن المستخدم قد سجّل الدخول إلى نظامك من خلال حساب Google، ويربط "مساعد Google" هوية المستخدم حساب Google الخاص بك. يمكن للمستخدم متابعة المحادثة مع "مساعد Google" مع ربط الحساب
    2. وإذا لم يحدث ذلك، راجِع الخطوة 5.
  5. يمكن للمستخدم إما أ) إنشاء حساب جديد باستخدام ملفه الشخصي في Google أو ب) سجّل الدخول إلى نظامك باستخدام حساب مختلف. تشير رسالة الأشكال البيانية تختلف الخيارات التي يقدمها المستخدم بناءً على ما إذا قمت بتمكين أو إيقاف إنشاء الحساب عبر الصوت. إذا اختار المستخدم تسجيل الدخول إلى حسابك بحساب مختلف، يبدأ تدفق OAuth القياسي.
  6. بعد أن ينشئ المستخدم حسابًا جديدًا أو يسجّل الدخول باستخدام مزوّد خدمة مختلف، تؤدي الخدمة إلى إرجاع رمز الدخول إلى Google. (إذا كنت تستخدم مسار رمز التفويض، تعرض خدمتك أيضًا رمزًا مميزًا للتحديث).
  7. يمكن للمستخدم الآن مواصلة المحادثة مع "مساعد Google" باستخدام تم ربط الحساب.

مسارات OAuth وGSI

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

يحتوي كل مسار على هذه الخطوات الشائعة بعد أن يستدعي المستخدم الإجراء الخاص بك:

في التدفق أعلاه، يمكنك استدعاء الغرض المساعد من خلال السمة actions.intent.SIGN_IN سياق تقوم بتخصيصه. يطلب هذا الغرض من المستخدم الحصول على إذن للوصول إلى معلومات الملف الشخصي في Google. بعد موافقة المستخدِم، يرسِل "مساعد Google" طلب يحتوي على معلومات الملف الشخصي لـ user@gmail.com.

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

مسارات مع تفعيل إنشاء حساب Google Voice

يوضّح هذا القسم بالتفصيل مسارات ربط الحسابات التي يمكن أن تحدث في حال تفعيل الميزة. إنشاء الحساب عبر الصوت.

المسار 1: توفُّر معلومات المستخدم في نظامك

في هذه الحالة، يوجد المستخدم الذي يتم تمثيله من خلال user@gmail.com في الخلفية، لكي تعرض نقطة نهاية تبادل الرموز المميزة رمزًا مميزًا للمستخدم. مسئولية المستخدم هويتك في الإجراء الخاص بك مرتبطة الآن بحسابهم على Google. مسئولية المستخدم يتطابق الطلب الأصلي ("طلبي كالمعتاد") مع الطلب المخصّص حسب النية بالشراء order_drink. يعالج الرد التلقائي على الويب بعد ذلك تنفيذ النية المطابقة وطلبات البحث قاعدة البيانات بترتيب user@gmail.com المعتاد. يمكن للمستخدم بعد ذلك متابعة للمحادثة مع المساعد.

المسار 2: معلومات المستخدم غير موجودة وأنشأ المستخدم حسابًا

لأنك فعّلت إنشاء الحساب عبر الصوت وuser@gmail.com لا في الخلفية، سيسأل "مساعد Google" المستخدم ما إذا كان يريد تنفيذ أيًا مما يلي:

أ) إنشاء حساب جديد على نظامك باستخدام معلومات ملفه الشخصي في Google، والذي يتم إنجازه بالصوت

ب) سجّل الدخول إلى النظام باستخدام حساب مختلف

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

بعد إنشاء الحساب، تعرض الخدمة رمز الدخول وتتم إعادة تحميل الصفحة. الذي تم إنشاؤه للحساب الجديد. تظهر الآن هوية المستخدم في الإجراء الخاص بك مرتبطة بحسابهم على Google. طلب المستخدم الأصلي ("طلبي كالمعتاد") يطابق الغرض المخصص order_drink. يعالج الرد التلقائي على الويب تنفيذ الأهداف المطابقة وطلبات البحث في قاعدة البيانات ترتيب user@gmail.com المعتاد، وهو غير متوفّر بعد لأنّ المستخدِم جديد. يمكن للإجراء بعد ذلك أن يسأل المستخدم عما يريد أن يطلبه.

المسار 3: معلومات المستخدم غير متوفّرة ويسجِّل المستخدم الدخول باستخدام حساب مختلف

لقد فعّلت إنشاء الحسابات عبر الصوت، لذلك يسأل "مساعد Google" المستخدم ما إذا كان فإنه يريد إجراء أي مما يلي:

أ) إنشاء حساب جديد على نظامك باستخدام معلومات ملفه الشخصي في Google، والذي يتم إنجازه بالصوت

ب) سجّل الدخول إلى النظام باستخدام حساب مختلف

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

بعد إثبات صحة بيانات اعتماد المستخدم، تعرض الخدمة رمز دخول. ورمز مميز للتحديث إلى Google تم الآن ربط هوية المستخدم في الإجراء الخاص بك. إلى حساب غير تابع لـ Google يتطابق طلب المستخدم الأصلي ("طلبي كالمعتاد") الغرض المخصص order_drink. يعالج الرد التلقائي على الويب تنفيذ الغرض المطابق والاستعلام عن قاعدة بياناتك بترتيب user@gmail.com المعتاد، وهي غير موجودة بعد لأن المستخدم جديد. يمكن للإجراء الخاص بك بعد ذلك أن يطلب المستخدم ما يريد أن يطلبه أو يطلب منه إعداد ترتيبه المعتاد.

تم إيقاف المسار مع إنشاء حساب Voice.

يوضّح هذا القسم تفاصيل عملية ربط الحسابات التي يمكن أن تحدث في حال إيقاف. إنشاء الحساب عبر الصوت.

المسار 4: معلومات المستخدم غير موجودة

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

بعد إثبات صحة بيانات اعتماد المستخدم، تعرض الخدمة رمز دخول. ورمز مميز للتحديث إلى Google تم الآن ربط هوية المستخدم في الإجراء الخاص بك. إلى حساب غير تابع لـ Google يتطابق طلب المستخدم الأصلي ("طلبي كالمعتاد") الغرض المخصص order_drink. يعالج الرد التلقائي على الويب تنفيذ الغرض المطابق والاستعلام عن قاعدة بياناتك بترتيب user@gmail.com المعتاد، وهي غير موجودة بعد لأن المستخدم جديد. يمكن للإجراء الخاص بك بعد ذلك أن يطلب المستخدم لإعداد ترتيبه المعتاد.