کاربران باید افزونهها و سایر برنامههایی که به دادههای آنها دسترسی دارند یا از طرف آنها عمل میکنند را تأیید کنند. وقتی کاربری برای اولین بار افزونهای را اجرا میکند، رابط کاربری افزونه یک اعلان تأیید برای شروع جریان تأیید نمایش میدهد.
در طول این جریان، اعلان به کاربر میگوید که برنامه برای انجام چه کاری مجوز میخواهد. برای مثال، یک افزونه ممکن است مجوز خواندن پیام ایمیل کاربر یا ایجاد رویداد در تقویم او را بخواهد. پروژه اسکریپت افزونه، این مجوزهای فردی را به عنوان دامنههای OAuth تعریف میکند.
شما با استفاده از رشتههای URL، محدودهها را در مانیفست خود اعلام میکنید. در طول فرآیند مجوزدهی، Apps Script توضیحی خوانا برای انسان از محدوده به کاربر ارائه میدهد. برای مثال، افزونه شما ممکن است از محدوده "خواندن سند فعلی" استفاده کند که در مانیفست شما به صورت https://www.googleapis.com/auth/documents.currentonly نوشته شده است. در طول فرآیند مجوزدهی، افزونهای با این محدوده از کاربر میخواهد که به افزونه اجازه دهد: اسنادی را که این برنامه در آنها نصب شده است، مشاهده و مدیریت کند.
مشاهده اسکوپها
شما میتوانید با انجام موارد زیر، محدودههایی را که پروژه اسکریپت شما در حال حاضر به آنها نیاز دارد، مشاهده کنید:
- پروژه اسکریپت را باز کنید.
- در سمت چپ، روی نمای کلی کلیک کنید.
- محدودهها را در بخش «محدودههای پروژه OAuth» مشاهده کنید.
همچنین میتوانید محدودههای فعلی پروژه اسکریپت را در مانیفست پروژه، در زیر فیلد oauthScopes مشاهده کنید، اما فقط در صورتی که آن محدودهها را به صراحت تنظیم کرده باشید.
تنظیم محدودههای صریح
اسکریپت برنامهها با اسکن کد اسکریپت برای فراخوانی توابعی که به آنها نیاز دارند، به طور خودکار تعیین میکند که یک اسکریپت به چه حوزههایی نیاز دارد. برای اکثر اسکریپتها این کافی است و در زمان شما صرفهجویی میکند، اما برای افزونههای منتشر شده باید کنترل مستقیمتری بر حوزهها اعمال کنید.
برای مثال، Apps Script ممکن است به طور پیشفرض به یک پروژه اسکریپت افزونه، دامنه بسیار مجاز https://mail.google.com را بدهد. وقتی کاربری یک پروژه اسکریپت را با این دامنه مجاز میکند، به پروژه دسترسی کامل به حساب Gmail کاربر داده میشود. برای افزونههای منتشر شده، باید این دامنه را با مجموعهای محدودتر که نیازهای افزونه را پوشش میدهد و نه بیشتر، جایگزین کنید.
شما میتوانید با ویرایش فایل مانیفست ، حوزههایی را که پروژه اسکریپت شما استفاده میکند، به طور صریح تنظیم کنید. فیلد oauthScopes در مانیفست، آرایهای از تمام حوزههایی است که توسط افزونه استفاده میشود. برای تنظیم حوزههای پروژه خود، موارد زیر را انجام دهید:
- محدودههایی که افزونه شما در حال حاضر استفاده میکند را مشاهده کنید . تعیین کنید که چه تغییراتی باید ایجاد شود، مانند استفاده از محدوده محدودتر.
- فایل مانیفست افزونه خود را باز کنید .
- فیلد سطح بالا با برچسب
oauthScopesرا پیدا کنید. اگر وجود ندارد، میتوانید آن را اضافه کنید. فیلد
oauthScopesآرایهای از رشتهها را مشخص میکند. برای تنظیم حوزههایی که پروژه شما استفاده میکند، محتویات این آرایه را با حوزههایی که میخواهید استفاده کند جایگزین کنید. به عنوان مثال، برای یک افزونه ویرایشگر که Sheets را گسترش میدهد، ممکن است موارد زیر را داشته باشید:{ ... "oauthScopes": [ "https://www.googleapis.com/auth/script.container.ui", "https://www.googleapis.com/auth/spreadsheets" ], ... }تغییرات فایل مانیفست را ذخیره کنید.
تأیید هویت OAuth
استفاده از برخی از حوزههای حساس OAuth ممکن است مستلزم آن باشد که افزونه شما قبل از انتشار، از طریق تأیید کلاینت OAuth بررسی شود. برای اطلاعات بیشتر، به راهنماهای زیر مراجعه کنید:
- تأیید کلاینت OAuth برای Apps Script
- برنامههای تأیید نشده
- سوالات متداول در مورد تأیید OAuth
- سرویس APIهای گوگل: سیاست دادههای کاربر
دامنههای محدود
برخی از حوزهها محدود شدهاند و تابع قوانین اضافی هستند که به محافظت از دادههای کاربر کمک میکنند. اگر قصد دارید افزونهای برای Gmail یا ویرایشگر منتشر کنید که از یک یا چند حوزه محدود استفاده میکند، افزونه باید قبل از انتشار، تمام محدودیتهای مشخص شده را رعایت کند.
قبل از اقدام به انتشار، لیست کامل حوزههای محدود شده را بررسی کنید. اگر افزونه شما از هر یک از آنها استفاده میکند، باید قبل از انتشار، الزامات اضافی برای حوزههای خاص API را رعایت کنید.
افزونهی ابزارهای توسعهدهندگان Google Workspace برای ویژوال استودیو کد، اطلاعات تشخیصی برای تمام حوزهها، از جمله توضیحات حوزه و اینکه آیا حساس یا محدود است، ارائه میدهد.
دامنههای افزونههای ویرایشگر
وقتی یک افزونهی ویرایشگر میسازید، محدودههای مورد نیاز توسط سرویس Apps Script و روشهایی که کد افزونه از آنها استفاده میکند، تعیین میشوند. برای مثال، یک افزونهی Sheets ممکن است برای خواندن اطلاعات از صفحات Google مختلف به محدودهی https://www.googleapis.com/auth/spreadsheets.readonly نیاز داشته باشد.
اسکریپت برنامهها (Apps Script) به طور خودکار دامنههای مورد نیاز سرویسهایی را که استفاده میکنید، هنگام اضافه کردن کد به پروژه اسکریپت شما تعیین میکند. برای افزونههای ویرایشگر، اغلب میتوانید به جای تعیین دامنهها توسط خودتان و تنظیم صریح آنها، به این مجموعه دامنه خودکار تکیه کنید.
اگر محدودههای خود را به صراحت تنظیم نمیکنید و افزونه ویرایشگر شما فقط فایل ویرایشگر باز را میخواند یا مینویسد، کامنت زیر را به یکی از فایلهای پروژه اسکریپت خود اضافه کنید:
/**
* @OnlyCurrentDoc
*/
این نظر به Apps Script میگوید که محدودهی فایل ویرایشگر را که روی currentonly تنظیم میکند، محدود کند. برای مثال، اگر این نظر را به فایل پروژهی اسکریپت افزونهی Google Sheets اضافه کنید، مشخص میکنید که افزونه فقط برای کار روی برگهی باز فعلی به مجوز نیاز دارد و نه هیچ برگهی دیگری که کاربر ممکن است در Google Drive داشته باشد. برعکس، اگر افزونهی Sheets شما نیاز به خواندن یا نوشتن دادهها در برگهای دارد که کاربر در حال حاضر آن را باز نکرده است، نباید از این نظر استفاده کنید.