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

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

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

يوضِّح المخطّط التالي الخطوات عالية المستوى للمصادقة والتفويض لتطبيق 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 API باستخدام مصادقة مستخدم لم يتم منحها بعد، سيطلب التطبيق من المستخدم تسجيل الدخول.

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

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

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

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

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

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

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

عندما تتطلب تطبيقات Chat المصادقة

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

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

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

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

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

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

  • يرسل مستخدم رسالة إلى تطبيق Chat.
  • يشير مستخدم بالرمز @إلى تطبيق في 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 لإجراء ما يلي:

  • أنشئ مساحة في 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.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.users.readstate الاطّلاع على وقت آخر قراءة لمحادثات Chat وتعديله
https://www.googleapis.com/auth/chat.users.readstate.readonly الاطّلاع على وقت قراءة محادثات Chat لآخر مرة

النطاقات المحظورة

رمز النطاق الوصف
https://www.googleapis.com/auth/chat.delete حذف المحادثات والمساحات وإزالة إمكانية الوصول إلى الملفات المرتبطة في Chat
https://www.googleapis.com/auth/chat.import يمكنك استيراد مساحات ورسائل واشتراكات إلى Chat. لمزيد من المعلومات، يُرجى الاطّلاع على تفويض تطبيقات 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 الوصول إلى واجهة برمجة التطبيقات كتطبيق باستخدام بيانات اعتماد حساب الخدمة. تستخدم تفويض التطبيق دائمًا نطاق تفويض chat.bot.

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

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

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

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

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

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

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

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

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