کاربران باید افزونهها و سایر برنامههایی که به دادههای آنها دسترسی دارند یا از طرف آنها عمل میکنند را تأیید کنند. وقتی کاربری برای اولین بار افزونهای را اجرا میکند، رابط کاربری افزونه یک اعلان تأیید برای شروع جریان تأیید نمایش میدهد.
در طول این جریان، اعلان به کاربر میگوید که برنامه برای انجام چه کاری مجوز میخواهد. برای مثال، یک افزونه ممکن است مجوز خواندن پیام ایمیل کاربر یا ایجاد رویداد در تقویم او را بخواهد. پروژه اسکریپت افزونه، این مجوزهای فردی را به عنوان دامنههای OAuth تعریف میکند.
شما با استفاده از رشتههای URL، محدودهها را در مانیفست خود اعلام میکنید. در طول فرآیند مجوزدهی، Apps Script توضیحی خوانا برای انسان از محدوده به کاربر ارائه میدهد. برای مثال، افزونه Google Workspace شما ممکن است از محدوده "خواندن پیام فعلی" استفاده کند که در مانیفست شما به صورت https://www.googleapis.com/auth/gmail.addons.current.message.readonly نوشته شده است. در طول فرآیند مجوزدهی، افزونهای با این محدوده از کاربر میخواهد که به افزونه اجازه دهد: پیامهای ایمیل شما را هنگام اجرای افزونه مشاهده کند .
مشاهده اسکوپها
شما میتوانید با انجام موارد زیر، محدودههایی را که پروژه اسکریپت شما در حال حاضر به آنها نیاز دارد، مشاهده کنید:
- پروژه اسکریپت را باز کنید.
- در سمت چپ، روی نمای کلی کلیک کنید.
- محدودهها را در بخش «محدودههای پروژه OAuth» مشاهده کنید.
همچنین میتوانید محدودههای فعلی پروژه اسکریپت را در مانیفست پروژه، در زیر فیلد oauthScopes مشاهده کنید، اما فقط در صورتی که آن محدودهها را به صراحت تنظیم کرده باشید.
تنظیم محدودههای صریح
اسکریپت برنامهها با اسکن کد اسکریپت برای فراخوانی توابعی که به آنها نیاز دارند، به طور خودکار تعیین میکند که یک اسکریپت به چه حوزههایی نیاز دارد. برای اکثر اسکریپتها این کافی است و در زمان شما صرفهجویی میکند، اما برای افزونههای منتشر شده باید کنترل مستقیمتری بر حوزهها اعمال کنید.
برای مثال، Apps Script ممکن است به طور پیشفرض به یک پروژه اسکریپت افزونه، دامنه بسیار مجاز https://mail.google.com را بدهد. وقتی کاربری یک پروژه اسکریپت را با این دامنه مجاز میکند، به پروژه دسترسی کامل به حساب Gmail کاربر داده میشود. برای افزونههای منتشر شده، باید این دامنه را با مجموعهای محدودتر که نیازهای افزونه را پوشش میدهد و نه بیشتر، جایگزین کنید.
شما میتوانید با ویرایش فایل مانیفست ، حوزههایی را که پروژه اسکریپت شما استفاده میکند، به طور صریح تنظیم کنید. فیلد oauthScopes در مانیفست، آرایهای از تمام حوزههایی است که توسط افزونه استفاده میشود. برای تنظیم حوزههای پروژه خود، موارد زیر را انجام دهید:
- محدودههایی که افزونه شما در حال حاضر استفاده میکند را مشاهده کنید . تعیین کنید که چه تغییراتی باید ایجاد شود، مانند استفاده از محدوده محدودتر.
- فایل مانیفست افزونه خود را باز کنید .
- فیلد سطح بالا با برچسب
oauthScopesرا پیدا کنید. اگر وجود ندارد، میتوانید آن را اضافه کنید. فیلد
oauthScopesآرایهای از رشتهها را مشخص میکند. برای تنظیم حوزههایی که پروژه شما استفاده میکند، محتویات این آرایه را با حوزههایی که میخواهید استفاده کند جایگزین کنید. به عنوان مثال، برای یک افزونه Google Workspace که Gmail را گسترش میدهد، ممکن است موارد زیر را داشته باشید:{ ... "oauthScopes": [ "https://www.googleapis.com/auth/gmail.addons.current.message.metadata", "https://www.googleapis.com/auth/userinfo.email" ], ... }تغییرات فایل مانیفست را ذخیره کنید.
تأیید هویت OAuth
استفاده از برخی از حوزههای حساس OAuth ممکن است مستلزم آن باشد که افزونه شما قبل از انتشار، از طریق تأیید کلاینت OAuth بررسی شود. برای اطلاعات بیشتر، به راهنماهای زیر مراجعه کنید:
- تأیید کلاینت OAuth برای Apps Script
- برنامههای تأیید نشده
- سوالات متداول در مورد تأیید OAuth
- سرویس APIهای گوگل: سیاست دادههای کاربر
دامنههای محدود
برخی از حوزهها محدود شدهاند و تابع قوانین اضافی هستند که به محافظت از دادههای کاربر کمک میکنند. اگر قصد دارید افزونهای برای Gmail یا ویرایشگر منتشر کنید که از یک یا چند حوزه محدود استفاده میکند، افزونه باید قبل از انتشار، تمام محدودیتهای مشخص شده را رعایت کند.
قبل از اقدام به انتشار، لیست کامل حوزههای محدود شده را بررسی کنید. اگر افزونه شما از هر یک از آنها استفاده میکند، باید قبل از انتشار، الزامات اضافی برای حوزههای خاص API را رعایت کنید.
افزونهی ابزارهای توسعهدهندگان Google Workspace برای ویژوال استودیو کد، اطلاعات تشخیصی برای تمام حوزهها، از جمله توضیحات حوزه و اینکه آیا حساس یا محدود است، ارائه میدهد.
انتخاب محدوده برای افزونههای Google Workspace
بخشهای زیر محدودههایی را ارائه میدهند که معمولاً برای افزونههای Google Workspace استفاده میشوند.
دامنههای ویرایشگر
در زیر، محدودههای پرکاربرد افزونههای Google Workspace که Docs، Sheets و Slides را گسترش میدهند، آورده شده است.
| محدوده | |
|---|---|
| دسترسی به فایل اسناد فعلی | https://www.googleapis.com/auth/documents.currentonlyدر صورتی که افزونه به API اسناد اسکریپت برنامهها دسترسی داشته باشد، الزامی است. دسترسی موقت به محتوای سند باز را اعطا میکند. |
| دسترسی به فایل Current Sheets | https://www.googleapis.com/auth/spreadsheets.currentonlyدر صورتی که افزونه به API صفحات اسکریپت برنامهها دسترسی داشته باشد، الزامی است. دسترسی موقت به محتوای صفحهگسترده باز را اعطا میکند. |
| دسترسی به فایل اسلایدهای فعلی | https://www.googleapis.com/auth/presentations.currentonlyدر صورتی که افزونه به API اسلایدهای Apps Script دسترسی داشته باشد، الزامی است. دسترسی موقت به محتوای ارائه باز را اعطا میکند. |
| دسترسی به ازای هر فایل | https://www.googleapis.com/auth/drive.file برای استفاده افزونه از |
جیمیل
چند محدوده وجود دارد که به طور خاص برای افزونههای Google Workspace ایجاد شدهاند تا به محافظت از دادههای Gmail کاربر کمک کنند. شما باید این محدودهها را به همراه هر محدوده دیگری که کد افزونه شما نیاز دارد، صریحاً به مانیفست افزونه خود اضافه کنید .
در زیر، محدودههای پرکاربرد افزونههای Google Workspace که Gmail را گسترش میدهند، آمده است؛ مواردی که با برچسب «الزامی» مشخص شدهاند، اگر افزونه شما Gmail را گسترش میدهد، باید به مانیفست افزونه Google Workspace شما اضافه شوند.
همچنین حتماً محدودهی بسیار گستردهی https://mail.google.com را در افزونهی خود با مجموعهای محدودتر از محدودهها جایگزین کنید که تعاملات مورد نیاز افزونهی شما را امکانپذیر سازد و نه بیشتر.
| محدوده | |
|---|---|
| ایجاد پیشنویسهای جدید | https://www.googleapis.com/auth/gmail.addons.current.action.composeدر صورتی که افزونه از محرکهای عمل نوشتن استفاده کند، الزامی است. به افزونه اجازه میدهد تا بهطور موقت پیامها و پاسخهای پیشنویس جدید ایجاد کند. برای جزئیات بیشتر به بخش نوشتن پیامهای پیشنویس مراجعه کنید؛ این محدوده اغلب با اقدامات نوشتن نیز استفاده میشود. به یک توکن دسترسی نیاز دارد. |
| خواندن فراداده پیام باز | https://www.googleapis.com/auth/gmail.addons.current.message.metadata دسترسی موقت به فرادادههای پیام باز (مانند موضوع یا گیرندگان) را اعطا میکند. اجازه خواندن محتوای پیام را نمیدهد و به یک توکن دسترسی نیاز دارد. اگر افزونه از فراداده در تریگرهای عمل نوشتن استفاده کند، الزامی است. برای اعمال نوشتن ، این دامنه در صورتی الزامی است که تریگر نوشتن نیاز به دسترسی به فراداده داشته باشد. در عمل، این دامنه به تریگر نوشتن اجازه میدهد به فهرستهای گیرنده (to:، cc: و bcc:) پیشنویس ایمیل پاسخ دسترسی داشته باشد. |
| محتوای پیام باز را بخوانید | https://www.googleapis.com/auth/gmail.addons.current.message.actionدسترسی به محتوای پیام باز شده را پس از تعامل کاربر، مانند زمانی که یک مورد از منوی افزونه انتخاب میشود، اعطا میکند. به یک توکن دسترسی نیاز دارد. |
| محتوای تاپیک باز شده را بخوانید | https://www.googleapis.com/auth/gmail.addons.current.message.readonlyدسترسی موقت به فراداده و محتوای پیام باز را اعطا میکند. همچنین دسترسی به محتوای سایر پیامها در رشتهی باز را اعطا میکند. به یک توکن دسترسی نیاز دارد. |
| خواندن هرگونه محتوای پیام و فراداده | https://www.googleapis.com/auth/gmail.readonlyخواندن هرگونه فراداده و محتوای ایمیل، از جمله پیام باز. در صورت نیاز به خواندن اطلاعات مربوط به سایر پیامها، مانند انجام یک جستجوی اینترنتی یا خواندن کل یک رشته ایمیل، الزامی است. |
محدودههای تقویم گوگل
در زیر، محدودههای پرکاربرد افزونههای Google Workspace که تقویم گوگل را گسترش میدهند، آورده شده است.
| محدوده | |
|---|---|
| دسترسی به فراداده رویداد | https://www.googleapis.com/auth/calendar.addons.executeدر صورتی که افزونه به فرادادههای رویداد تقویم دسترسی داشته باشد، الزامی است. به افزونه اجازه میدهد تا به فرادادههای رویداد دسترسی داشته باشد. |
| خواندن دادههای رویداد تولید شده توسط کاربر | https://www.googleapis.com/auth/calendar.addons.current.event.read اگر افزونه نیاز به خواندن دادههای رویداد تولید شده توسط کاربر داشته باشد، الزامی است. به افزونه اجازه میدهد تا به دادههای رویداد تولید شده توسط کاربر دسترسی داشته باشد. این دادهها فقط در صورتی در دسترس هستند که فیلد مانیفست |
| نوشتن دادههای رویداد تولید شده توسط کاربر | https://www.googleapis.com/auth/calendar.addons.current.event.write اگر افزونه نیاز به نوشتن دادههای رویداد تولید شده توسط کاربر داشته باشد، الزامی است. به افزونه اجازه میدهد دادههای رویداد تولید شده توسط کاربر را ویرایش کند. این دادهها فقط در صورتی در دسترس هستند که فیلد مانیفست |
محدودههای گوگل چت
برای فراخوانی Chat API، باید به عنوان کاربر Google Chat یا به عنوان برنامه Chat احراز هویت کنید. هر نوع احراز هویت به حوزههای مختلفی نیاز دارد و همه متدهای Chat API از احراز هویت برنامه پشتیبانی نمیکنند.
برای کسب اطلاعات بیشتر در مورد حوزههای چت و انواع احراز هویت، به نمای کلی احراز هویت و مجوز API چت مراجعه کنید.
جدول زیر متدها و حوزههای پرکاربرد Chat API را بر اساس انواع احراز هویت پشتیبانیشده نشان میدهد:
| روش | احراز هویت کاربر پشتیبانی میشود | احراز هویت برنامه پشتیبانی میشود | دامنههای مجوز پشتیبانی میشوند | |
|---|---|---|---|---|
| ارسال پیام | با احراز هویت کاربر :
| |||
| ایجاد یک فضا | با احراز هویت کاربر :
| |||
| ایجاد و اضافه کردن اعضا به یک فضا | — | با احراز هویت کاربر :
| ||
| اضافه کردن کاربر به یک فضا | با احراز هویت کاربر :
| |||
| فهرست کردن فعالیتها یا رویدادها از یک فضای چت | — | با احراز هویت کاربر ، باید برای هر نوع رویداد موجود در درخواست، از یک محدوده استفاده کنید:
| ||
دامنههای گوگل درایو
در زیر، محدودههای پرکاربرد افزونههای Google Workspace که Google Drive را گسترش میدهند، آورده شده است.
| محدوده | |
|---|---|
| خواندن فرادادههای مورد انتخاب شده | https://www.googleapis.com/auth/drive.addons.metadata.readonlyاگر افزونه یک رابط متنی پیادهسازی کند که هنگام انتخاب موارد توسط کاربر در Drive فعال میشود، الزامی است. به افزونه اجازه میدهد تا فرادادههای محدودی درباره مواردی که کاربر در Google Drive انتخاب کرده است، بخواند. این فرادادهها به شناسه، عنوان، نوع MIME، آدرس اینترنتی آیکون و اینکه آیا افزونه اجازه دسترسی به مورد را دارد یا خیر، محدود میشوند. |
| دسترسی به ازای هر فایل | https://www.googleapis.com/auth/drive.file اگر افزونه نیاز به دسترسی به فایلهای درایو به صورت جداگانه داشته باشد، توصیه میشود. با استفاده از سرویس پیشرفته درایو Apps Script، به ازای هر فایل به فایلهای ایجاد شده یا باز شده توسط برنامه دسترسی میدهد. با این حال، این اجازه استفاده از اقدامات مشابه با استفاده از سرویس پایه درایو را نمیدهد. مجوز فایل بر اساس هر فایل اعطا میشود و هنگامی که کاربر برنامه را لغو مجوز میکند، لغو میشود. |
توکنهای دسترسی
برای محافظت از دادههای کاربر، محدودههای Gmail مورد استفاده در افزونههای Google Workspace فقط دسترسی موقت به دادههای کاربر را اعطا میکنند. برای فعال کردن دسترسی موقت، باید تابع GmailApp.setCurrentMessageAccessToken(accessToken) را با استفاده از یک توکن دسترسی به عنوان آرگومان فراخوانی کنید. باید یک توکن دسترسی را از یک شیء رویداد action دریافت کنید.
در ادامه مثالی از تنظیم توکن دسترسی برای دسترسی به فرادادههای یک پیام نشان داده شده است. تنها محدوده مورد نیاز برای این مثال https://www.googleapis.com/auth/gmail.addons.current.message.metadata است.
function readSender(e) {
var accessToken = e.gmail.accessToken;
var messageId = e.gmail.messageId;
// The following function enables short-lived access to the current
// message in Gmail. Access to other Gmail messages or data isn't
// permitted.
GmailApp.setCurrentMessageAccessToken(accessToken);
var mailMessage = GmailApp.getMessageById(messageId);
return mailMessage.getFrom();
}
سایر حوزههای کاری گوگل
اگر افزونه شما از سرویسهای دیگر Google Workspace یا Apps Script استفاده کند، ممکن است به محدودههای بیشتری نیاز داشته باشد. در بیشتر موارد، میتوانید به Apps Script اجازه دهید این محدودهها را شناسایی کرده و مانیفست را به طور خودکار بهروزرسانی کند. هنگام ویرایش لیست محدودههای مانیفست خود، هیچ محدودهای را حذف نکنید، مگر اینکه آنها را با یک جایگزین مناسبتر، مانند یک محدوده محدودتر، جایگزین کنید.
جدول زیر لیستی از محدودههایی را نشان میدهد که افزونههای Google Workspace اغلب از آنها استفاده میکنند:
| محدوده | |
|---|---|
| خواندن آدرس ایمیل کاربر | https://www.googleapis.com/auth/userinfo.emailبه پروژه اجازه میدهد آدرس ایمیل کاربر فعلی را بخواند. |
| اجازه تماس با سرویسهای خارجی | https://www.googleapis.com/auth/script.external_request به پروژه اجازه میدهد تا درخواستهای |
| خواندن موقعیت مکانی و منطقه زمانی کاربر | https://www.googleapis.com/auth/script.localeبه پروژه اجازه میدهد تا زبان و منطقه زمانی کاربر فعلی را یاد بگیرد. برای جزئیات بیشتر به بخش دسترسی به زبان و منطقه زمانی کاربر مراجعه کنید. |
| ایجاد محرکها | https://www.googleapis.com/auth/script.scriptappبه پروژه اجازه میدهد تا triggerها را ایجاد کند. |
| پیشنمایش لینکهای شخص ثالث | https://www.googleapis.com/auth/workspace.linkpreviewدر صورتی که افزونه، لینکهای یک سرویس شخص ثالث را پیشنمایش کند، الزامی است. به پروژه اجازه میدهد تا در حین تعامل کاربر با یک لینک، آن را در برنامه Google Workspace مشاهده کند. برای کسب اطلاعات بیشتر، به پیشنمایش لینکها با تراشههای هوشمند مراجعه کنید. |
| ایجاد منابع شخص ثالث | https://www.googleapis.com/auth/workspace.linkcreateدر صورتی که افزونه منابعی را در یک سرویس شخص ثالث ایجاد کند، الزامی است. به پروژه اجازه میدهد اطلاعاتی را که کاربران به فرم ایجاد منبع ارسال میکنند، بخواند و پیوندی به منبع را در یک برنامه Google Workspace درج کند. برای کسب اطلاعات بیشتر، به «ایجاد منابع شخص ثالث» از منوی @ مراجعه کنید. |