مصادقة تطبيقات Chat وطلبات البيانات من Google Chat API واعتمادها

المصادقة والترخيص هما آليات تستخدم للتحقق من الهوية والوصول إلى الموارد، على التوالي. يوضح هذا المستند آلية عمل المصادقة والتفويض لتطبيقات Chat وطلبات Chat API.

نظرة عامة على العملية

يوضح المخطّط التالي الخطوات عالية المستوى للمصادقة والتفويض في Google Chat:

خطوات عالية المستوى لمصادقة وتفويض Google Chat
الشكل 1. خطوات عالية المستوى لمصادقة وتفويض Google Chat

  1. ضبط مشروع على Google Cloud وتفعيل Chat API وضبط تطبيق Chat: أثناء عملية التطوير، عليك إنشاء مشروع على Google Cloud. في مشروع Google Cloud، يمكنك تفعيل Chat API وضبط تطبيق Chat وإعداد المصادقة. لمزيد من المعلومات، يُرجى الاطّلاع على مقالة التطوير على Google Workspace وإنشاء تطبيق Chat.

  2. Call Chat API: عندما يطلب تطبيقك واجهة برمجة التطبيقات Chat، يُرسِل بيانات اعتماد المصادقة إلى Chat API. إذا أجرى تطبيقك المصادقة باستخدام حساب الخدمة، يتم إرسال بيانات الاعتماد كجزء من رمز التطبيق. إذا كان تطبيقك يتطلب استدعاء واجهة برمجة تطبيقات Chat باستخدام مصادقة مستخدم لم يتم منحها بعد، ستتم مطالبة المستخدم بتسجيل الدخول.

  3. طلب الموارد: يطلب تطبيقك الوصول باستخدام النطاقات التي تحدّدها أثناء إعداد المصادقة.

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

  5. إرسال طلب موافَق عليه للموارد: إذا وافق المستخدم على نطاقات التفويض، سيجمع تطبيقك بيانات الاعتماد والنطاقات التي وافق عليها المستخدم في طلب. يتم إرسال الطلب إلى خادم تفويض Google للحصول على رمز الدخول.

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

  7. الوصول إلى الموارد المطلوبة: يستخدم تطبيقك رمز الدخول من Google لاستدعاء Chat API والوصول إلى موارد Chat API.

  8. الحصول على رمز مميَّز لإعادة التحميل (اختياري): إذا كان على تطبيقك الوصول إلى واجهة برمجة تطبيقات Google Chat بعد استخدام رمز دخول موحّد، يمكن للتطبيق الحصول على رمز مميّز لإعادة التحميل. لمزيد من المعلومات، يُرجى الاطّلاع على استخدام OAuth 2.0 للوصول إلى Google APIs.

  9. طلب المزيد من الموارد: إذا كان تطبيقك يحتاج إلى المزيد من أذونات الوصول، سيطلب من المستخدم منح نطاقات جديدة، ما يؤدي إلى تقديم طلب جديد للحصول على رمز الدخول (الخطوات من 3 إلى 6).

الحالات التي تتطلّب مصادقة تطبيقات Chat

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

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

لإرسال رسائل غير متزامنة أو تنفيذ مهام نيابةً عن المستخدم، تقدّم تطبيقات Chat طلبات REST إلى Chat API، والتي تتطلّب المصادقة والتفويض.

لا تتطلب الردود على تفاعلات المستخدم المصادقة

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

تتلقّى تطبيقات Google Chat أحداث التفاعل كلما تفاعل المستخدم مع تطبيق Chat أو يستدعيه، ويشمل ذلك ما يلي:

يوضّح المخطّط التالي تسلسلاً للطلب والاستجابة بين مستخدم على Chat وتطبيق Chat:

ما مِن تفويض مطلوب لأحداث التفاعل مع تطبيق Chat
الشكل 2.لا تتطلب أحداث التفاعل مع تطبيق Chat مصادقة.

  1. يرسل المستخدم رسالة إلى تطبيق Chat في Google Chat.
  2. وسيعيد Google Chat توجيه الرسالة إلى التطبيق.
  3. يتلقّى التطبيق الرسالة ويعالجها ويردّ على Google Chat.
  4. يعرض تطبيق Google Chat الردّ للمستخدم أو في مساحة.

ويتكرر هذا التسلسل لكل حدث تفاعل مع تطبيق Chat.

تتطلب الرسائل غير المتزامنة مصادقة

تظهر الرسائل غير المتزامنة عندما يقدّم تطبيق Chat طلبًا إلى Chat API، ما يتطلّب المصادقة والترخيص.

من خلال طلب البيانات من Chat API، يمكن لتطبيقات Chat نشر الرسائل إلى Google Chat أو إكمال المهام والوصول إلى البيانات نيابةً عن المستخدم. على سبيل المثال، بعد رصد انقطاع في الخادم، يمكن لتطبيق Chat استدعاء Chat API لتنفيذ ما يلي:

  • أنشئ مساحة Chat مخصصة للتحقيق في انقطاع الخدمة وإصلاحه.
  • إضافة مستخدمين إلى مساحة Chat
  • انشر رسالة على مساحة Chat لتقديم تفاصيل حول انقطاع الخدمة.

يعرض المخطّط التالي تسلسلاً غير متزامن للرسائل بين تطبيق Chat ومساحة Chat:

المصادقة مطلوبة للرسائل غير المتزامنة
الشكل 3. ويجب مصادقة الرسائل غير المتزامنة.

  1. ينشئ تطبيق Chat رسالة من خلال طلب Chat API باستخدام الطريقة spaces.messages.create، ويتضمن بيانات اعتماد المستخدم في طلب HTTP.
  2. يصادق Google Chat على تطبيق Chat باستخدام حساب الخدمة أو بيانات اعتماد المستخدم.
  3. يعرض Google Chat رسالة التطبيق على مساحة Chat محدّدة.

نطاقات Chat API

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

لتحديد مستوى الوصول الممنوح لتطبيقك، عليك تحديد نطاقات التفويض وتعريفها. نطاق التفويض هو سلسلة معرّف موارد منتظم (URI) لبروتوكول OAuth 2.0 تحتوي على اسم تطبيق Google Workspace ونوع البيانات التي يصل إليها ومستوى الوصول.

النطاقات غير الحساسة

رمز النطاق الوصف
https://www.googleapis.com/auth/chat.bot يسمح هذا الخيار لتطبيقات Chat بعرض المحادثات وإرسال الرسائل. يمنح إمكانية الوصول إلى جميع الميزات المتاحة لتطبيقات Chat.

النطاقات الحساسة

رمز النطاق الوصف
https://www.googleapis.com/auth/chat.spaces يمكنك إنشاء محادثات ومساحات والاطّلاع على البيانات الوصفية أو تعديلها (بما في ذلك إعدادات السجلّ) في Chat.
https://www.googleapis.com/auth/chat.spaces.create إنشاء محادثات جديدة في Chat
https://www.googleapis.com/auth/chat.spaces.readonly يمكنك الاطّلاع على المحادثات والمساحات في Chat.
https://www.googleapis.com/auth/chat.memberships الاطّلاع على المشاركين في المحادثات في Chat وإضافتهم وإزالتهم
https://www.googleapis.com/auth/chat.memberships.app إضافة نفسه إلى المحادثات في Google Chat وإزالة نفسه منها
https://www.googleapis.com/auth/chat.memberships.readonly الاطّلاع على المشاركين في المحادثات على Chat
https://www.googleapis.com/auth/chat.messages.create إنشاء الرسائل وإرسالها في Chat
https://www.googleapis.com/auth/chat.messages.reactions عرض وإضافة وحذف التفاعلات مع الرسائل في Chat
https://www.googleapis.com/auth/chat.messages.reactions.create إضافة تفاعلات إلى رسالة في Chat
https://www.googleapis.com/auth/chat.messages.reactions.readonly يمكنك الاطّلاع على التفاعلات مع رسالة في Chat.

نطاقات مشروطة

رمز النطاق الوصف
https://www.googleapis.com/auth/chat.delete حذف المحادثات والمساحات وإزالة إمكانية الوصول إلى الملفات المرتبطة بها في Chat
https://www.googleapis.com/auth/chat.messages عرض وإنشاء وإرسال وتعديل وحذف الرسائل، وإضافة وعرض وحذف التفاعلات مع الرسائل
https://www.googleapis.com/auth/chat.messages.readonly يمكنك عرض الرسائل والتفاعلات في Chat.

تشير النطاقات في الجداول السابقة إلى مستوى حساسيتها، وفقًا للتعريفات التالية:

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

لمزيد من المعلومات عن نطاقات واجهات برمجة تطبيقات Google Workspace، يُرجى الاطّلاع على مقالة ضبط شاشة طلب الموافقة المتعلّقة ببروتوكول OAuth واختيار النطاقات.

أنواع المصادقة المطلوبة

هناك طريقتان يمكن من خلالهما تطبيقات Chat للمصادقة والتفويض باستخدام Chat API: بيانات اعتماد المستخدمين أو حسابات الخدمة.

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

باستخدام تفويض التطبيق، يصل تطبيق Chat إلى واجهة برمجة التطبيقات كتطبيق يستخدم بيانات اعتماد حساب الخدمة. تستخدم تفويض التطبيق دائمًا نطاق تفويض chat.bot.

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

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

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

على سبيل المثال، يؤدي استدعاء الإجراء ListSpaces باستخدام تفويض التطبيق إلى عرض قائمة المساحات التي ينتمي إليها التطبيق. يؤدي استدعاء ListSpaces باستخدام تفويض المستخدم إلى إرجاع قائمة المساحات التي يكون المستخدم عضوًا فيها. من الناحية العملية، قد يستخدم تطبيقك كلا النوعين من التفويضات عند طلب بيانات Chat API، حسب الوظيفة التي تريدها.

بالنسبة إلى طلبات البيانات غير المتزامنة من Chat API

يسرد الجدول التالي طرق Chat API ونطاقات التفويض المتوافقة لها:

الطريقة دعم مصادقة المستخدم دعم مصادقة التطبيقات نطاقات التفويض المتاحة
المساحات  
إنشاء مساحة
  • chat.spaces.create
  • chat.spaces
إعداد مساحة
  • chat.spaces.create
  • chat.spaces
الحصول على مساحة باستخدام مصادقة المستخدم:
  • chat.spaces.readonly
  • chat.spaces
باستخدام مصادقة التطبيقات:
  • chat.bot
مساحات العمل باستخدام مصادقة المستخدم:
  • chat.spaces.readonly
  • chat.spaces
باستخدام مصادقة التطبيقات:
  • chat.bot
تعديل مساحة
  • chat.spaces
حذف مساحة
  • chat.delete
البحث عن رسالة مباشرة باستخدام مصادقة المستخدم:
  • chat.spaces.readonly
  • chat.spaces
باستخدام مصادقة التطبيقات:
  • chat.bot
الأعضاء  
إنشاء اشتراك داعم
  • chat.memberships
  • chat.memberships.app
الاشتراك باستخدام مصادقة المستخدم:
  • chat.memberships.readonly
  • chat.memberships
باستخدام مصادقة التطبيقات:
  • chat.bot
أعضاء القائمة باستخدام مصادقة المستخدم:
  • chat.memberships.readonly
  • chat.memberships
باستخدام مصادقة التطبيقات:
  • chat.bot
حذف عضو
  • chat.memberships
  • chat.memberships.app
الرسائل  
إنشاء رسالة باستخدام مصادقة المستخدم:
  • chat.messages.create
  • chat.messages
باستخدام مصادقة التطبيقات:
  • chat.bot
تلقّي رسالة باستخدام مصادقة المستخدم:
  • chat.messages.readonly
  • chat.messages
باستخدام مصادقة التطبيقات:
  • chat.bot
إدراج الرسائل
  • chat.messages.readonly
  • chat.messages
تعديل رسالة باستخدام مصادقة المستخدم:
  • chat.messages
باستخدام مصادقة التطبيقات:
  • chat.bot
حذف رسالة باستخدام مصادقة المستخدم:
  • chat.messages
باستخدام مصادقة التطبيقات:
  • chat.bot
التفاعلات  
إنشاء تفاعل
  • chat.messages.reactions.create
  • chat.messages.reactions
  • chat.messages
إدراج التفاعلات
  • chat.messages.reactions.readonly
  • chat.messages.reactions
  • chat.messages.readonly
  • chat.messages
حذف تفاعل
  • chat.messages.reactions
  • chat.messages
الوسائط والمرفقات  
تحميل الوسائط كمرفق ملف
  • chat.messages.create
  • chat.messages
تنزيل الوسائط باستخدام مصادقة المستخدم:
  • chat.messages.readonly
  • chat.messages
باستخدام مصادقة التطبيقات:
  • chat.bot
الحصول على مرفق رسالة
  • chat.bot

بالنسبة إلى أحداث التفاعل مع تطبيق Chat

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

السيناريو المصادقة غير مطلوبة دعم مصادقة المستخدم دعم مصادقة التطبيقات
تلقّي رسائل من:
أحداث التفاعل مع تطبيق Chat
استدعاءات "برمجة التطبيقات"
Google Cloud Pub/Sub
الرد على الرسائل:
بشكلٍ متزامن، باستخدام حدث التفاعل مع تطبيق Chat
بشكل متزامن، يتم استخدام قيمة عرض لمعاودة الاتصال في "برمجة تطبيقات Google"
إرسال رسائل جديدة:
مع الردود التلقائية الواردة على الويب