N

Nokfa Docs

ไม่มีชื่อบทความ

การตั้งค่า Google Cloud และ Calendar API

1. สร้าง Google Cloud Project

  1. เข้าสู่หน้า Google Cloud Console
  2. คลิก Create Project
  3. ตั้งชื่อโปรเจกต์ เช่น time-clock-app
  4. จดจำ Project ID ไว้ใช้งานภายหลัง

2. เปิดใช้ Calendar API

  1. ในหน้าโปรเจกต์ที่สร้างแล้ว เข้าเมนู APIs & ServicesLibrary
  2. ค้นหา Google Calendar API
  3. กด Enable เพื่อเปิดใช้งาน

3. สร้าง Service Account

เหตุผลที่เลือกใช้ Service Account:

  • ไม่ต้องขออนุญาตผ่าน OAuth Consent Screen ทีละผู้ใช้
  • ใช้ได้กับระบบ server-to-server โดยตรง
  • ควบคุมสิทธิ์การเข้าถึง Calendar ได้ละเอียด

ขั้นตอนสร้าง Service Account

  1. ไปที่ IAM & AdminService Accounts
  2. กด Create Service Account
  3. กรอกชื่อ เช่น calendar-access-sa
  4. ในขั้นตอน Grant Access:
    • กดข้าม ไม่ต้องกำหนด Role ในตอนนี้
  5. เมื่อสร้างเสร็จ กดที่ Service Account → KeysAdd KeyCreate New Key
    • เลือกประเภทไฟล์: JSON
    • ดาวน์โหลดไฟล์ .json
    • เก็บไว้ในโปรเจกต์ที่โฟลเดอร์ /config/google-service-account.json

ข้อควรระวัง: อย่า commit ไฟล์ .json นี้ขึ้น Git (เพิ่มเข้า .gitignore)

4. แชร์สิทธิ์ Calendar ให้ Service Account

  1. เข้า Google Calendar
  2. สร้าง Calendar ใหม่ (หรือใช้ Calendar เดิม)
  3. ไปที่ Settings ของ Calendar นั้น
  4. ในหัวข้อ Share with specific people or groups:
    • กด Add People and Groups
    • ใส่ Email ของ Service Account (เช่น calendar-access-sa@your-project-id.iam.gserviceaccount.com)
    • ตั้งสิทธิ์เป็น Make changes to events

5. ตั้งค่า .env.example

สร้างไฟล์ .env.example ที่ root ของโปรเจกต์ พร้อมระบุตัวแปรต่อไปนี้:

GOOGLE_PROJECT_ID=your-google-project-id
GOOGLE_CALENDAR_ID=your-calendar-id@group.calendar.google.com
GOOGLE_CLIENT_EMAIL=service-account-email@your-project-id.iam.gserviceaccount.com
GOOGLE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n"

ข้อสำคัญเกี่ยวกับ GOOGLE_PRIVATE_KEY:

  • ต้องใช้ "..." (double quotes) ครอบรอบ
  • ต้องแทนบรรทัดใหม่ด้วย \n (สอง backslash ตามด้วย n)
  • ตัวอย่างการแปลง:
    • หา \n แทนทุกจุดที่เป็นบรรทัดใหม่เดิม (ใช้ Notepad++ หรือ VSCode Replace)

ตัวอย่าง:

GOOGLE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\nMIIEv...\n...END PRIVATE KEY-----\n"

6. อ้างอิงเอกสารล่าสุด


หมายเหตุ: การตั้งค่าให้ครบตามนี้จะสามารถเชื่อมต่อ Calendar API จาก server-side ของ Next.js ได้อย่างปลอดภัย