رفتن به محتوا

اتصال یک Google Calendar

این راهنما نشان می‌دهد چگونه Google Calendar را به یک فضای کاری متصل کنید. اتصال به تفکیک فضای کاری است: رویدادهای همان فضای کاری را فقط‌خواندنی به Control Center همگام‌سازی می‌کند. برای تصویر کامل، تقویم و زمان‌بندی را ببینید.

  1. تقویم را در نوار کناری باز کنید.
  2. در نوار کناری تقویم روی افزودن حساب تقویم کلیک کنید. (همین بخش در تنظیمات ← فضای کاری ← نمایه و هویت، زیر Google Calendar قرار دارد.)
  3. انتخاب کنید که چگونه مجوز بدهید:
    • استفاده از برنامهٔ Google متعلق به Control Center — چیزی برای راه‌اندازی نیست. این گزینه وقتی نسخهٔ شما یکی همراه دارد، پیش‌فرض است.
    • استفاده از کلاینت Google Cloud خودم — شناسهٔ کلاینت و کلید محرمانه را از پروژهٔ خودتان بچسبانید (به آوردن کلاینت Google خودتان نگاه کنید).
  4. روی اتصال Google Calendar کلیک کنید. پنجرهٔ گفتگو یک کد کوتاه و پیوندی به صفحهٔ دستگاه Google نشان می‌دهد.
  5. آن صفحه را روی هر دستگاهی باز کنید، کد را وارد کنید و دسترسی درخواست‌شده را تأیید کنید. پنجرهٔ گفتگو خودش بسته می‌شود و رویدادهای شما شروع به همگام‌سازی می‌کنند.

این تبادل را سرور اجرا می‌کند، نه دستگاه شما، و توکن تازه‌سازی حاصل را نگه می‌دارد — به همین دلیل کد روی «هر دستگاهی» تأیید می‌شود، نه به‌طور خاص در این برنامه.

این حساب فقط به فضای کاری فعال متصل می‌شود. فضای کاری را عوض کنید و به‌جایش تقویم‌های همان فضای کاری را می‌بینید.

جریان اتصال calendar.readonly به‌همراه ایمیل شما را درخواست می‌کند — همان محدوده‌ها برای برنامهٔ داخلی و برای کلاینتی که خودتان وارد می‌کنید. Control Center رویدادها را می‌خواند؛ روی Google چیزی نمی‌سازد، ویرایش یا حذف نمی‌کند و به دعوت‌نامه‌ها پاسخ نمی‌دهد.

سرور صاحب زمان‌بندی است: هر دو دقیقه حساب‌های متصل هر فضای کاری را جاروب می‌کند و رویدادها را در پایگاه‌دادهٔ آن فضای کاری می‌نویسد. کلاینت‌ها هرگز با Google صحبت نمی‌کنند — آنچه سرور نوشته است را می‌خوانند.

جاروب افزایشی است. نخستین گذر برای هر تقویم یک پنجرهٔ چرخشی (۶۰ روز گذشته، ۹۰ روز آینده) می‌گیرد و توکن همگام‌سازی Google را ثبت می‌کند؛ گذرهای بعدی همان توکن را ارائه می‌دهند و فقط آنچه تغییر کرده را دریافت می‌کنند، و همین است که تناوب دودقیقه‌ای را مقرون‌به‌صرفه می‌کند. این پنجره هر ۲۴ ساعت و هر بار که Google توکن را بی‌اعتبار کند، با یک همگام‌سازی کامل دوباره لنگر می‌اندازد.

توکن‌های تازه‌سازی سمت سرور و در secrets.json زیر شاخهٔ دادهٔ سرور قرار دارند و فقط برای مالک نوشته می‌شوند (0600) — نه در جاکلیدی سیستم‌عامل و هرگز روی یک دستگاه کلاینت.

یک فضای کاری می‌تواند چند حساب Google را متصل کند (برای نمونه کاری و شخصی). برای هر حساب مرحلهٔ اتصال را تکرار کنید؛ رویدادهایشان در همان نماهای ماه / هفته / برنامه ادغام می‌شوند. هر حساب مستقل همگام‌سازی و تازه‌سازی می‌شود و هر کدام می‌تواند جداگانه قطع شود.

اگر Google توکن یک حساب را برای همیشه بی‌اعتبار کند (نشستی لغوشده یا مدتی طولانی منقضی‌شده)، همگام‌سازی متوقف می‌شود و Control Center روی تقویم یک بنر اتصال مجدد به‌همراه یک اعلان دسکتاپ نشان می‌دهد. روی اتصال مجدد کلیک کنید و یک کد جدید را تأیید کنید؛ بنر در نخستین همگام‌سازی موفق بعدی پاک می‌شود.

از نوار کناری تقویم (یا تنظیمات ← فضای کاری ← نمایه و هویت)، روی قطع اتصال حساب کلیک کنید. این کار رویدادهای همگام‌شدهٔ آن را حذف و توکن‌های ذخیره‌شدهٔ آن را روی سرور پاک می‌کند.

سروری که رابط گرافیکی متصل ندارد، همان حساب را از ترمینال خودش متصل می‌کند:

پنجرهٔ ترمینال
GOOGLE_OAUTH_CLIENT_ID=<id> GOOGLE_OAUTH_CLIENT_SECRET=<secret> \
cc_server calendar connect --data-dir <dir> --workspace <workspace-id>

یک کد و یک URL چاپ می‌کند، منتظر تأیید می‌ماند، سپس توکن‌ها را ذخیره می‌کند و در جاروب بعدی همگام‌سازی می‌کند.

نسخه‌ای که از کد منبع ساخته می‌شود هیچ کلاینت Google همراه ندارد، بنابراین شناسه و کلید محرمانه الزامی‌اند — GOOGLE_OAUTH_CLIENT_ID و GOOGLE_OAUTH_CLIENT_SECRET را تنظیم کنید. فلگ --google-client-id وجود ندارد (فلگ‌های ناشناخته نادیده گرفته می‌شوند). بدون این جفت متغیر محیطی، فرمان با خطای نبود کلاینت خارج می‌شود.

آوردن کلاینت Google خودتان (فورک‌ها و میزبانی شخصی)

بخش با عنوان “آوردن کلاینت Google خودتان (فورک‌ها و میزبانی شخصی)”

نسخه‌های منتشرشده یک کلاینت Google همراه دارند، بنابراین بیشتر افراد هرگز به این بخش دست نمی‌زنند. اگر از کد منبع می‌سازید، سرور خودتان را اجرا می‌کنید یا می‌خواهید صفحهٔ رضایت نام پروژهٔ خودتان را نشان دهد، کلاینت خودتان را بیاورید.

  1. در Google Cloud Console، Google Calendar API را فعال کنید و صفحهٔ رضایت OAuth را پیکربندی کنید و محدوده‌های calendar.readonly، openid و email را اضافه کنید. تا وقتی برنامه تأییدنشده است، خودتان را به‌عنوان یک کاربر آزمایشی اضافه کنید. افزودن calendar.events در صفحهٔ رضایت، امکان پاسخ دادن به دعوت‌ها را فعال نمی‌کند — Control Center هرگز آن محدوده را درخواست نمی‌کند.
  2. یک شناسهٔ کلاینت OAuth از نوع برنامهٔ TVs and limited input devices بسازید و هم شناسهٔ کلاینت و هم کلید محرمانهٔ آن را کپی کنید.
  3. آن‌ها را یا برای هر اتصال تأمین کنید (در پنجرهٔ گفتگو استفاده از کلاینت Google Cloud خودم را انتخاب کنید) یا برای کل سرور با GOOGLE_OAUTH_CLIENT_ID و GOOGLE_OAUTH_CLIENT_SECRET.

یک جفت سطح‌سرور، جفت داخلی را همه‌جا جایگزین می‌کند، از جمله پشت گزینهٔ «استفاده از برنامهٔ Google متعلق به Control Center» — پس روی سرور خودتان، آن گزینه همان برنامهٔ شماست.

کلید محرمانهٔ کلاینت هرگز از سرور بیرون نمی‌رود: هیچ پاسخ RPC آن را حمل نمی‌کند و حسابی که از طریق کلاینت خود سرور متصل شده، به‌جای نسخه‌ای از آن جفت، یک نشانگر ذخیره می‌کند؛ پس چرخاندن آن فقط به راه‌اندازی مجدد با یک مقدار جدید نیاز دارد.

نشانه علت احتمالی
پنجرهٔ گفتگو هیچ گزینهٔ داخلی ارائه نمی‌دهد این نسخه هیچ کلاینت Google همراه ندارد (نسخهٔ ساخته‌شده از کد منبع)، یا سرور تنها با یک نیمهٔ آن جفت راه‌اندازی شده است. هم شناسه و هم کلید محرمانه الزامی‌اند
invalid_scope هنگام شروع جریان Calendar برای یک کلاینت کد دستگاه در آن پروژهٔ Cloud مجاز نیست. به‌جایش از پروژه‌ای با کلاینت loopback یا کلاینت وب استفاده کنید
invalid_client از سوی Google کلاینت از نوع TVs and limited input devices نیست، یا شناسه و کلید محرمانه از دو کلاینت متفاوت‌اند
تأیید موفق می‌شود اما همگام‌سازی خالی است حساب شما در صفحهٔ رضایت یک کاربر آزمایشی نیست، یا calendar.readonly اعطا نشده است
کد پیش از تأیید شما منقضی می‌شود کدهای دستگاه عمر کوتاهی دارند. اتصال را دوباره شروع کنید تا کد تازه‌ای بگیرید
«به‌روزرسانی پاسخ شما ممکن نشد» هنگام پاسخ به یک دعوت انتظار می‌رود: جریان اتصال هرگز calendar.events را درخواست نمی‌کند
همگام‌سازی با یک هشدار تازه‌سازی در گزارش سرور متوقف می‌شود حساب با کلاینتی متصل شده که دیگر پیکربندی نشده است. حساب را دوباره متصل کنید، یا آن شناسه و کلید محرمانهٔ کلاینت را بازگردانید