تخطَّ إلى المحتوى

ربط Google Calendar

يبيّن هذا الدليل كيف تربط Google Calendar بمساحة عمل. الربط لكل مساحة عمل: يزامن أحداث تلك المساحة إلى Control Center، للقراءة فقط. انظر التقويم والجدولة للصورة الكاملة.

  1. افتح التقويم في الشريط الجانبي.
  2. انقر إضافة حساب تقويم في الشريط الجانبي للتقويم. (القسم نفسه موجود في الإعدادات ← مساحة العمل ← الملف الشخصي والهوية، تحت تقويم Google.)
  3. اختر طريقة التفويض:
    • استخدام تطبيق Google التابع لـControl Center — لا شيء يلزم إعداده. هذا هو الافتراضي حين يُشحن بناؤك بعميل.
    • استخدام عميل Google Cloud الخاص بي — الصق معرّف العميل وسرّه من مشروعك (انظر جلب عميل Google الخاص بك).
  4. انقر ربط تقويم Google. يعرض الحوار رمزًا قصيرًا ورابطًا إلى صفحة التحقق لدى Google.
  5. افتح تلك الصفحة على أي جهاز، وأدخل الرمز، ووافق على الوصول المطلوب. يُغلق الحوار من تلقاء نفسه وتبدأ أحداثك بالمزامنة.

الخادم، لا جهازك، يجري هذا التبادل ويحتفظ برمز التحديث الناتج. ولهذا تُوافق على الرمز على «أي جهاز»، لا داخل هذا التطبيق تحديدًا.

يُربَط الحساب بمساحة العمل النشطة فقط. بدّل مساحة العمل فترى تقويمات تلك المساحة بدلًا منها.

يطلب مسار الربط calendar.readonly بالإضافة إلى بريدك، وهي النطاقات نفسها للتطبيق المضمَّن وللعميل الذي تلصقه. يقرأ Control Center الأحداث، ولا ينشئ دعوات ولا يحرّرها ولا يحذفها ولا يردّ عليها على Google.

الخادم يملك الجدول: يمسح الحسابات المتصلة في كل مساحة عمل كل دقيقتين، ويكتب الأحداث في قاعدة تلك المساحة. لا يتصل العملاء بـ Google أبدًا، بل يقرؤون ما كتبه الخادم.

المسح تزايدي. الجولة الأولى لكل تقويم تجلب نافذة متحركة (60 يومًا إلى الوراء، و90 يومًا إلى الأمام) وتلتقط رمز مزامنة Google، والجولات اللاحقة تقدّم ذلك الرمز وتتلقى ما تغيّر فقط، وهذا ما يجعل إيقاع الدقيقتين قليل الكلفة. تُعاد مزامنة النافذة كاملة كل 24 ساعة، وكلما أبطل 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 من نوع التطبيق أجهزة التلفاز والإدخال المحدود، وانسخ معرّف العميل وسرّه كليهما.
  3. قدّمهما إما عند كل ربط (اختر استخدام عميل Google Cloud الخاص بي في الحوار) أو على نطاق الخادم عبر GOOGLE_OAUTH_CLIENT_ID وGOOGLE_OAUTH_CLIENT_SECRET.

زوج على نطاق الخادم يحل محل المضمَّن في كل مكان، بما في ذلك خلف خيار «استخدام تطبيق Google التابع لـControl Center»، فعلى خادمك يكون ذلك الخيار تطبيقك.

سر العميل لا يغادر الخادم: لا تحمل أي استجابة RPC السر، والحساب المربوط عبر عميل الخادم نفسه يخزّن علامة لا نسخة من الزوج، فتدويره يكون بإعادة التشغيل بقيمة جديدة.

العَرَض السبب المرجّح
الحوار لا يعرض خيارًا مضمّنًا هذا البناء بلا عميل Google (بناء من المصدر)، أو أُطلق الخادم بنصف الزوج فقط. معرّف العميل وسرّه مطلوبان معًا
invalid_scope عند بدء التدفق لا يُسمح بـ Google Calendar لعميل رمز الجهاز في مشروع Cloud ذاك. استخدم مشروعًا بعميل loopback أو عميل ويب بدلًا منه
invalid_client من Google العميل ليس من نوع أجهزة التلفاز والإدخال المحدود، أو المعرّف والسر من عميلين مختلفين
تنجح الموافقة لكن المزامنة فارغة حسابك ليس مستخدمًا تجريبيًا على شاشة الموافقة، أو لم يُمنح calendar.readonly
ينتهي الرمز قبل أن توافق عليه رموز الجهاز قصيرة العمر. ابدأ الربط من جديد لتحصل على رمز جديد
«تعذّر تحديث ردّك» عند الرد على الدعوة متوقَّع: مسار الربط لا يطلب calendar.events
تتوقف المزامنة مع تحذير تجديد الرمز في سجل الخادم رُبط الحساب بعميل لم يعد مُعدًّا. أعد ربط الحساب، أو أعد معرّف ذلك العميل وسرّه