مواد پر جائیں

Google Calendar جوڑیں

یہ گائیڈ بتاتی ہے کہ Google Calendar کو کسی ورک اسپیس سے کیسے جوڑیں۔ یہ فی ورک اسپیس ہے: وہ اُس ورک اسپیس کے ایونٹس صرف پڑھنے کے انداز میں Control Center میں سنک کرتی ہے۔ مکمل تصویر کے لیے کیلنڈر اور شیڈولنگ دیکھیں۔

  1. سائیڈبار میں کیلنڈر کھولیں۔
  2. کیلنڈر سائیڈبار میں کیلنڈر اکاؤنٹ شامل کریں پر کلک کریں۔ (یہی سیکشن ترتیبات → ورک اسپیس → پروفائل اور شناخت میں Google Calendar کے تحت بھی موجود ہے۔)
  3. منتخب کریں کہ اجازت کیسے دی جائے:
    • Control Center کی Google ایپ استعمال کریں — سیٹ اپ کرنے کے لیے کچھ نہیں۔ جب آپ کے بلڈ کے ساتھ کوئی ایپ شامل ہو تو یہی ڈیفالٹ ہے۔
    • میرا اپنا Google Cloud کلائنٹ استعمال کریں — اپنے پروجیکٹ سے کلائنٹ id اور secret پیسٹ کریں (دیکھیں اپنا Google کلائنٹ لائیں)۔
  4. Google Calendar منسلک کریں پر کلک کریں۔ ڈائیلاگ ایک مختصر کوڈ اور Google کے ڈیوائس صفحے کا لنک دکھاتا ہے۔
  5. وہ صفحہ کسی بھی ڈیوائس پر کھولیں، کوڈ درج کریں اور مطلوبہ رسائی کی منظوری دیں۔ ڈائیلاگ خود بند ہو جاتا ہے اور آپ کے ایونٹس سنک ہونے لگتے ہیں۔

یہ تبادلہ آپ کی ڈیوائس نہیں بلکہ سرور چلاتا ہے اور نتیجے میں ملنے والا ریفریش ٹوکن اپنے پاس رکھتا ہے — اسی لیے کوڈ ”کسی بھی ڈیوائس“ پر منظور ہوتا ہے، اِس ایپ میں خاص طور پر نہیں۔

اکاؤنٹ صرف فعال ورک اسپیس سے جڑتا ہے۔ ورک اسپیس بدلیں تو آپ کو اُس ورک اسپیس کے کیلنڈر نظر آئیں گے۔

کنیکٹ فلو calendar.readonly کے ساتھ ساتھ آپ کا ای میل طلب کرتا ہے — بلٹ اِن ایپ اور آپ کے پیسٹ کردہ کلائنٹ، دونوں کے لیے ایک ہی اسکوپس۔ Control Center ایونٹس پڑھتا ہے؛ یہ Google پر دعوت نامے نہ بناتا ہے، نہ اُن میں ترمیم یا حذف کرتا ہے اور نہ اُن کا جواب دیتا ہے۔

سرور شیڈول کا مالک ہے: یہ ہر دو منٹ بعد ہر ورک اسپیس کے منسلک اکاؤنٹس کی اسکین کرتا ہے اور ایونٹس کو اُس ورک اسپیس کے ڈیٹا بیس میں لکھتا ہے۔ کلائنٹس Google سے کبھی بات نہیں کرتے — جو سرور نے لکھا ہوتا ہے، وہی پڑھتے ہیں۔

اسکین صرف بدلاؤ پر مشتمل ہوتی ہے۔ ہر کیلنڈر پر پہلی گزر ایک گھومتی ونڈو (60 دن پیچھے، 90 دن آگے) لاتی ہے اور Google کا سنک ٹوکن محفوظ کرتی ہے؛ بعد کی گزریں وہی ٹوکن پیش کرتی ہیں اور صرف بدلا ہوا حصہ وصول کرتی ہیں، اور یہی چیز دو منٹ کی رفتار کو قابلِ برداشت بناتی ہے۔ ونڈو ہر 24 گھنٹے بعد اور جب بھی Google ٹوکن باطل کرے، مکمل سنک کے ساتھ دوبارہ اینکر ہوتی ہے۔

ریفریش ٹوکن سرور کی طرف رہتے ہیں: سرور کی ڈیٹا ڈائریکٹری کے اندر secrets.json میں، صرف مالک کی رسائی کے ساتھ (0600) لکھے جاتے ہیں — نہ OS کی چین میں اور نہ کبھی کسی کلائنٹ ڈیوائس پر۔

ایک ورک اسپیس کئی Google اکاؤنٹس جوڑ سکتی ہے (مثلاً کام کا اور ذاتی)۔ ہر ایک کے لیے کنیکٹ کا مرحلہ دہرائیں؛ اُن کے ایونٹس ایک ہی مہینہ / ہفتہ / ایجنڈا ویوز میں ضم ہو جاتے ہیں۔ ہر اکاؤنٹ الگ الگ سنک اور ریفریش ہوتا ہے اور ہر ایک کو علیحدہ طور پر منقطع کیا جا سکتا ہے۔

میعاد ختم شدہ اکاؤنٹ دوبارہ منسلک کریں

سیکشن کا عنوان “میعاد ختم شدہ اکاؤنٹ دوبارہ منسلک کریں”

اگر Google کسی اکاؤنٹ کا ٹوکن مستقل طور پر باطل کر دے (منسوخ یا بہت عرصے سے میعاد ختم شدہ سیشن)، تو سنک رک جاتا ہے اور Control Center کیلنڈر پر دوبارہ منسلک کریں کا بینر، ساتھ ہی ایک ڈیسک ٹاپ اطلاع دکھاتا ہے۔ دوبارہ منسلک کریں پر کلک کریں اور نیا کوڈ منظور کریں؛ اگلے کامیاب سنک پر بینر غائب ہو جاتا ہے۔

کیلنڈر سائیڈبار سے (یا ترتیبات → ورک اسپیس → پروفائل اور شناخت سے) اکاؤنٹ پر منقطع کریں پر کلک کریں۔ یہ اُس کے سنک شدہ ایونٹس حذف کرتا ہے اور سرور پر اُس کے محفوظ ٹوکن صاف کر دیتا ہے۔

بغیر GUI والا سرور وہی اکاؤنٹ اپنے ٹرمنل سے جوڑتا ہے:

ٹرمنل ونڈو
GOOGLE_OAUTH_CLIENT_ID=<id> GOOGLE_OAUTH_CLIENT_SECRET=<secret> \
cc_server calendar connect --data-dir <dir> --workspace <workspace-id>

یہ ایک کوڈ اور URL دکھاتا ہے، منظوری کا انتظار کرتا ہے، پھر ٹوکن محفوظ کرتا ہے اور اگلی اسکین پر سنک کرتا ہے۔

سورس سے بنایا گیا بلڈ کوئی Google کلائنٹ ساتھ نہیں لاتا، اس لیے id اور secret لازمی ہیں — GOOGLE_OAUTH_CLIENT_ID اور GOOGLE_OAUTH_CLIENT_SECRET سیٹ کریں۔ کوئی --google-client-id فلیگ نہیں ہے (نامعلوم فلیگز نظر انداز ہو جاتے ہیں)۔ ماحول کی یہ جوڑی نہ ہونے پر کمانڈ missing-client کی خرابی کے ساتھ ختم ہو جاتی ہے۔

اپنا Google کلائنٹ لائیں (فورکس اور سیلف ہوسٹنگ)

سیکشن کا عنوان “اپنا Google کلائنٹ لائیں (فورکس اور سیلف ہوسٹنگ)”

جاری شدہ بلڈز کے ساتھ Google کلائنٹ آتا ہے، اس لیے زیادہ تر لوگ اِسے چھوتے بھی نہیں۔ اپنا کلائنٹ اُس وقت لیں جب آپ سورس سے بلڈ کرتے ہوں، اپنا سرور چلاتے ہوں، یا چاہتے ہوں کہ رضامندی کی اسکرین آپ کے اپنے پروجیکٹ کا نام لے۔

  1. Google Cloud Console میں Google Calendar API فعال کریں اور OAuth consent screen کنفیگر کریں، اور calendar.readonly، openid اور email اسکوپس شامل کریں۔ جب تک ایپ غیر تصدیق شدہ ہے، خود کو ایک test user کے طور پر شامل کریں۔ رضامندی کی اسکرین پر calendar.events شامل کرنا RSVP فعال نہیں کرتا — Control Center وہ اسکوپ کبھی طلب نہیں کرتا۔
  2. ایپلیکیشن کی قسم TVs and limited input devices کا OAuth client ID بنائیں اور کلائنٹ id اور کلائنٹ secret دونوں کاپی کریں۔
  3. اِنہیں یا تو ہر کنیکٹ پر دیں (ڈائیلاگ میں میرا اپنا Google Cloud کلائنٹ استعمال کریں منتخب کریں) یا سرور بھر کے لیے GOOGLE_OAUTH_CLIENT_ID اور GOOGLE_OAUTH_CLIENT_SECRET کے ساتھ دیں۔

سرور بھر کی یہ جوڑی ہر جگہ بلٹ اِن جوڑی کی جگہ لے لیتی ہے، بشمول ”Control Center کی Google ایپ استعمال کریں“ والے آپشن کے پیچھے — چنانچہ آپ کے اپنے سرور پر وہ آپشن آپ کی ہی ایپ ہے۔

کلائنٹ secret کبھی سرور سے باہر نہیں جاتا: کوئی RPC جواب اُسے ساتھ نہیں لے جاتا اور سرور کے اپنے کلائنٹ سے جڑا اکاؤنٹ اُس جوڑی کی کاپی کے بجائے ایک مارکر محفوظ کرتا ہے، اس لیے اُسے بدلنا نئی قدر کے ساتھ ری اسٹارٹ کرنے کا معاملہ بھر ہے۔

علامت ممکنہ وجہ
ڈائیلاگ میں کوئی بلٹ اِن آپشن نہیں ہوتا اِس بلڈ کے ساتھ کوئی Google کلائنٹ نہیں آتا (سورس بلڈ)، یا سرور جوڑی کے صرف ایک حصے کے ساتھ شروع کیا گیا تھا۔ id اور secret دونوں لازمی ہیں
فلو شروع کرتے وقت invalid_scope اُس Cloud پروجیکٹ میں ڈیوائس کوڈ کلائنٹ کے لیے Calendar کی اجازت نہیں ہے۔ اِس کے بجائے loopback یا web کلائنٹ پروجیکٹ استعمال کریں
Google سے invalid_client کلائنٹ TVs and limited input devices قسم کا نہیں ہے، یا id اور secret مختلف کلائنٹس کے ہیں
منظوری کامیاب ہو جاتی ہے مگر سنک خالی رہتا ہے رضامندی کی اسکرین پر آپ کا اکاؤنٹ test user نہیں ہے، یا calendar.readonly عطا نہیں کیا گیا
منظوری دینے سے پہلے کوڈ کی میعاد ختم ہو جاتی ہے ڈیوائس کوڈ مختصر مدت کے ہوتے ہیں۔ نیا کوڈ لینے کے لیے کنیکٹ دوبارہ شروع کریں
RSVP پر ”آپ کا جواب اپ ڈیٹ نہیں ہو سکا“ متوقع: کنیکٹ فلو calendar.events کبھی طلب نہیں کرتا
سرور لاگ میں ریفریش وارننگ کے ساتھ سنک رک جاتا ہے اکاؤنٹ ایسے کلائنٹ سے جڑا تھا جو اب کنفیگر نہیں ہے۔ اکاؤنٹ دوبارہ منسلک کریں، یا وہ کلائنٹ id اور secret بحال کریں