اتصال یک Google Calendar
این راهنما نشان میدهد چگونه Google Calendar را به یک فضای کاری متصل کنید. اتصال به تفکیک فضای کاری است: رویدادهای همان فضای کاری را فقطخواندنی به Control Center همگامسازی میکند. برای تصویر کامل، تقویم و زمانبندی را ببینید.
اتصال یک حساب
بخش با عنوان “اتصال یک حساب”- تقویم را در نوار کناری باز کنید.
- در نوار کناری تقویم روی افزودن حساب تقویم کلیک کنید. (همین بخش در تنظیمات ← فضای کاری ← نمایه و هویت، زیر Google Calendar قرار دارد.)
- انتخاب کنید که چگونه مجوز بدهید:
- استفاده از برنامهٔ Google متعلق به Control Center — چیزی برای راهاندازی نیست. این گزینه وقتی نسخهٔ شما یکی همراه دارد، پیشفرض است.
- استفاده از کلاینت Google Cloud خودم — شناسهٔ کلاینت و کلید محرمانه را از پروژهٔ خودتان بچسبانید (به آوردن کلاینت Google خودتان نگاه کنید).
- روی اتصال Google Calendar کلیک کنید. پنجرهٔ گفتگو یک کد کوتاه و پیوندی به صفحهٔ دستگاه Google نشان میدهد.
- آن صفحه را روی هر دستگاهی باز کنید، کد را وارد کنید و دسترسی درخواستشده را تأیید کنید. پنجرهٔ گفتگو خودش بسته میشود و رویدادهای شما شروع به همگامسازی میکنند.
این تبادل را سرور اجرا میکند، نه دستگاه شما، و توکن تازهسازی حاصل را نگه میدارد — به همین دلیل کد روی «هر دستگاهی» تأیید میشود، نه بهطور خاص در این برنامه.
این حساب فقط به فضای کاری فعال متصل میشود. فضای کاری را عوض کنید و بهجایش تقویمهای همان فضای کاری را میبینید.
جریان اتصال 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 همراه دارند، بنابراین بیشتر افراد هرگز به این بخش دست نمیزنند. اگر از کد منبع میسازید، سرور خودتان را اجرا میکنید یا میخواهید صفحهٔ رضایت نام پروژهٔ خودتان را نشان دهد، کلاینت خودتان را بیاورید.
- در Google Cloud Console، Google Calendar API را فعال کنید و صفحهٔ رضایت OAuth را پیکربندی کنید و محدودههای
calendar.readonly،openidوemailرا اضافه کنید. تا وقتی برنامه تأییدنشده است، خودتان را بهعنوان یک کاربر آزمایشی اضافه کنید. افزودنcalendar.eventsدر صفحهٔ رضایت، امکان پاسخ دادن به دعوتها را فعال نمیکند — Control Center هرگز آن محدوده را درخواست نمیکند. - یک شناسهٔ کلاینت OAuth از نوع برنامهٔ TVs and limited input devices بسازید و هم شناسهٔ کلاینت و هم کلید محرمانهٔ آن را کپی کنید.
- آنها را یا برای هر اتصال تأمین کنید (در پنجرهٔ گفتگو استفاده از کلاینت 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 را درخواست نمیکند |
| همگامسازی با یک هشدار تازهسازی در گزارش سرور متوقف میشود | حساب با کلاینتی متصل شده که دیگر پیکربندی نشده است. حساب را دوباره متصل کنید، یا آن شناسه و کلید محرمانهٔ کلاینت را بازگردانید |
راهنماهای مرتبط
بخش با عنوان “راهنماهای مرتبط”- ضبط و خلاصهکردن یک جلسه: رویدادی را به یک ضبط تبدیل کنید
- اجرای سرور بدون رابط: توکنها و زمانبندی همگامسازی کجا قرار دارند
- راهاندازی یکپارچهسازی GitHub