אימות והרשאה של אפליקציות צ'אט ובקשות מ-Google Chat API

אימות והרשאה הם מנגנונים שמשמשים לאימות הזהות וגישה למשאבים, בהתאמה. במאמר הזה מוסבר איך פועלים האימות וההרשאות באפליקציות ל-Chat ובבקשות API ל-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 API, היא שולחת את פרטי הכניסה לאימות ל-Chat API. אם האפליקציה מבצעת אימות באמצעות חשבון שירות, פרטי הכניסה נשלחים כחלק מקוד האפליקציה. אם באפליקציה נדרשת קריאה ל-Chat API באמצעות אימות של המשתמש שעדיין לא ניתן, היא תבקש מהמשתמש להיכנס לחשבון.

  3. בקשת משאבים: האפליקציה מבקשת גישה באמצעות היקפי הרשאות שהגדרתם במהלך הגדרת האימות.

  4. לבקש הסכמה: אם האפליקציה שלכם מבצעת אימות כמשתמש, Google תציג מסך הסכמה ל-OAuth כדי שהמשתמש יוכל להחליט אם להעניק לאפליקציה גישה לנתונים המבוקשים. אימות באמצעות חשבון שירות לא מחייב הסכמת המשתמש.

  5. שליחת בקשה שאושרה למשאבים: אם המשתמש מסכים להיקפי ההרשאות, ה-App Bundle משלב בבקשה את פרטי הכניסה ואת ההיקפים שאושרו על ידי המשתמשים. הבקשה נשלחת לשרת ההרשאות של 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 API או ל-Google API אחר בזמן עיבוד התשובה.

כדי לשלוח הודעות אסינכרוניות או לבצע משימות בשם המשתמש, אפליקציות Chat שולחות בקשות RESTful ל-Chat API, שנדרשות להן אימות והרשאה.

התגובות לאינטראקציות של משתמשים לא מחייבות אימות

אפליקציות של Google Chat לא צריכות לעבור אימות כמשתמש או כאפליקציית Chat כדי לקבל אירועי אינטראקציה ולהגיב להם באופן סינכרוני.

האפליקציות של Google Chat מקבלות אירועי אינטראקציה בכל פעם שמשתמש יוצר אינטראקציה עם אפליקציית Chat או מפעיל אותה, כולל:

  • משתמש שולח הודעה לאפליקציית Chat.
  • משתמש מוסיף אזכור ( @mention) של אפליקציית 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 באמצעות ה-method spaces.messages.create, וכוללת את פרטי הכניסה של המשתמש בבקשת ה-HTTP.
  2. אפליקציית Google Chat מאמתת את אפליקציית Chat באמצעות חשבון השירות או פרטי הכניסה של המשתמש.
  3. מערכת Google Chat מעבדת את ההודעות מהאפליקציה למרחב משותף מסוים ב-Chat.

היקפי ההרשאות של Chat API

כדי לקבוע איזה מידע יוצג למשתמשים ולבודקי אפליקציות, צריך להגדיר את מסך ההסכמה ל-OAuth ולבחור היקפים, ולרשום את האפליקציה כדי לפרסם אותה מאוחר יותר.

כדי להגדיר את רמת הגישה שמוענקת לאפליקציה, אתם צריכים לזהות את היקפי ההרשאות ולהצהיר עליהם. היקף ההרשאה הוא מחרוזת מסוג OAuth 2.0 URI שכוללת את השם של האפליקציה ב-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.admin.spaces.readonly צפייה בצ'אט ובמרחבים המשותפים שבבעלות הדומיין של האדמין ב-Chat.
https://www.googleapis.com/auth/chat.admin.memberships.readonly צפייה בחברים ובמנהלים בשיחות שבבעלות הדומיין של האדמין ב-Chat.
https://www.googleapis.com/auth/chat.admin.memberships צפייה, הוספה, עדכון והסרה של חברים ומנהלים בשיחות שבבעלות הדומיין של האדמין ב-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.
https://www.googleapis.com/auth/chat.admin.delete מחיקת השיחות והמרחבים שבבעלות הדומיין של האדמין והסרת הגישה לקבצים המשויכים ב-Chat.

ההיקפים בטבלאות שלמעלה מציינים את מידת הרגישות שלהם, לפי ההגדרות הבאות:

אם לאפליקציה שלכם נדרשת גישה לממשקי API אחרים של Google, אפשר להוסיף גם את ההיקפים האלה. למידע נוסף על ההיקפים של Google API, ראו שימוש ב-OAuth 2.0 לגישה ל-Google APIs.

במאמר הגדרת מסך ההסכמה ל-OAuth ובחירת היקפים תוכלו לקרוא מידע נוסף על היקפי ההרשאות של Google Workspace APIs.

סוגי האימות הנדרש

יש שתי דרכים שבהן אפליקציות ל-Chat יכולות לבצע אימות ואישור באמצעות ה-API ל-Chat: פרטי כניסה של משתמשים או חשבונות שירות.

הרשאת כניסה של משתמש מאפשרת לאפליקציית Chat לגשת לנתוני משתמשים ולבצע פעולות בשם המשתמש. היקפי ההרשאות של OAuth מציינים את הפעולות והנתונים המורשים.

באמצעות הרשאה לאפליקציה, אפליקציית Chat ניגשת ל-API כאפליקציה באמצעות פרטי הכניסה של חשבון השירות. הרשאה לאפליקציה תמיד משתמשת בהיקף ההרשאה chat.bot.

כשאתם מחליטים איזה סוג של פרטי כניסה להשתמש עבור בקשת API מסוימת, חשוב לזכור ששיטות API מסוימות תומכות רק בסוג מסוים של פרטי כניסה. אם method של API תומכת בשני פרטי הכניסה, סוג פרטי הכניסה שנעשה בו שימוש בקריאה משפיע על התוצאה שמוחזרת:

  • בהרשאה 'הרשאה לאפליקציה', השיטות מחזירות רק משאבים שלאפליקציה יש גישה אליהם.
  • בהרשאת משתמש, השיטות מחזירות רק משאבים שהמשתמש יכול לגשת אליהם בממשק המשתמש של Chat.

לדוגמה, אם תקראו ל-method ListSpaces עם הרשאת אפליקציה, תוכלו לראות את רשימת המרחבים המשותפים שבהם האפליקציה חברה. כשמבצעים קריאה ל-ListSpaces עם הרשאת משתמש, מופיעה רשימת המרחבים המשותפים שבהם המשתמש חבר. בפועל, יכול להיות שהאפליקציה תשתמש בשני סוגי ההרשאות כדי לשלוח קריאה ל-Chat API, בהתאם לפונקציונליות הרצויה.

לקריאות אסינכרוניות של 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.admin.spaces.readonly
איך משנים את המרחב המשותף באמצעות אימות משתמש:
  • chat.spaces
  • chat.import
איך מוחקים מרחבים משותפים באמצעות אימות משתמש:
  • chat.delete
  • chat.import
כשמשתמשים באימות משתמש באמצעות הרשאות אדמין:
  • chat.admin.delete
השלמת תהליך הייבוא של מרחב משותף באמצעות אימות משתמש:
  • chat.import
איך מחפשים צ'אטים אישיים באמצעות אימות משתמש:
  • chat.spaces.readonly
  • chat.spaces
באמצעות אימות אפליקציות:
  • chat.bot
חברים  
איך יוצרים חברי מועדון באמצעות אימות משתמש:
  • chat.memberships
  • chat.memberships.app
  • chat.import
כשמשתמשים באימות משתמש באמצעות הרשאות אדמין:
  • chat.admin.memberships
הצטרפות למועדון החברים באמצעות אימות משתמש:
  • chat.memberships.readonly
  • chat.memberships
באמצעות אימות אפליקציות:
  • chat.bot
חברים ברשימה באמצעות אימות משתמש:
  • chat.memberships.readonly
  • chat.memberships
  • chat.import
באמצעות אימות אפליקציות:
  • chat.bot
כשמשתמשים באימות משתמש באמצעות הרשאות אדמין:
  • chat.admin.memberships.readonly
מחיקת חבר באמצעות אימות משתמש:
  • chat.memberships
  • chat.memberships.app
  • chat.import
כשמשתמשים באימות משתמש באמצעות הרשאות אדמין:
  • chat.admin.memberships
הודעות  
איך יוצרים הודעות באמצעות אימות משתמש:
  • 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
קריאה חוזרת (callback) ב-Apps Script
Google Cloud Pub/Sub
איך עונים להודעות:
שימוש סינכרוני באירוע אינטראקציה של אפליקציית Chat
באופן סינכרוני, באמצעות ערך החזרה של קריאה חוזרת ב-Apps Script
שליחת הודעות חדשות:
עם webhooks נכנסים