Skip to content

Google: Service Account#

การใช้ Service Account มีความซับซ้อนกว่า OAuth2 ก่อนที่คุณจะเริ่ม:

  • ตรวจสอบว่า node ของคุณ เข้ากันได้ กับ Service Account หรือไม่
  • ตรวจสอบให้แน่ใจว่าคุณจำเป็นต้องใช้ Service Account จริงๆ สำหรับกรณีการใช้งานส่วนใหญ่ OAuth2 เป็นตัวเลือกที่ดีกว่า
  • อ่านเอกสารของ Google เกี่ยวกับ Creating and managing service accounts

Prerequisites#

Set up Service Account#

มีสี่ขั้นตอนในการเชื่อมต่อ credential ของ n8n กับ Google Service Account:

Create a Google Cloud Console project#

ขั้นแรก สร้างโปรเจกต์ Google Cloud Console หากคุณมีโปรเจกต์อยู่แล้ว ข้ามไปที่ส่วนถัดไป:

  1. ลงชื่อเข้าใช้ Google Cloud Console โดยใช้ Google credentials ของคุณ
  2. ในเมนูด้านบน เลือก project dropdown ในแถบนำทางด้านบน แล้วเลือก New project หรือไปที่หน้า New Project โดยตรง
  3. ป้อน Project name และเลือก Location สำหรับ project ของคุณ
  4. เลือก Create
  5. ตรวจสอบแถบนำทางด้านบนและตรวจสอบให้แน่ใจว่า project dropdown ได้เลือก project ของคุณแล้ว หากยังไม่ได้เลือก ให้เลือก project ที่คุณเพิ่งสร้างขึ้น

    The project dropdown in the Google Cloud top navigation
    ตรวจสอบ project dropdown ในแถบนำทางด้านบนของ Google Cloud

Enable APIs#

เมื่อสร้างโปรเจกต์ของคุณแล้ว เปิดใช้งาน APIs ที่คุณต้องการเข้าถึง:

  1. เข้าถึง Google Cloud Console - Library ของคุณ ตรวจสอบให้แน่ใจว่าคุณอยู่ใน project ที่ถูกต้อง
    The project dropdown in the Google Cloud top navigation
    ตรวจสอบ project dropdown ในแถบนำทางด้านบนของ Google Cloud
  2. ไปที่ APIs & Services > Library
  3. ค้นหาและเลือก API ที่คุณต้องการเปิดใช้งาน ตัวอย่างเช่น สำหรับ Gmail node ให้ค้นหาและเปิดใช้งาน Gmail API
  4. บาง integrations จำเป็นต้องใช้ API อื่นๆ หรือต้องการให้คุณขอสิทธิ์เข้าถึง:

    ต้องการ Google Drive API

    Integrations ต่อไปนี้ต้องการ Google Drive API รวมถึง API ของตัวเองด้วย:

    • Google Docs
    • Google Sheets
    • Google Slides

    Google Vertex AI API

    นอกเหนือจาก Vertex AI API แล้ว คุณจะต้องเปิดใช้งาน Cloud Resource Manager API ด้วย

  5. เลือก ENABLE

Set up Google Cloud Service Account#

  1. เข้าถึง Google Cloud Console - Library ของคุณ ตรวจสอบให้แน่ใจว่าคุณอยู่ในโปรเจกต์ที่ถูกต้อง

    The project dropdown in the Google Cloud top navigation
    ตรวจสอบ dropdown ของโปรเจกต์ในแถบนำทางด้านบนของ Google Cloud

  2. เลือกเมนูแฮมเบอร์เกอร์ > APIs & Services > Credentials Google จะนำคุณไปยังหน้า Credentials ของคุณ

  3. เลือก + CREATE CREDENTIALS > Service account
  4. ป้อนชื่อใน Service account name และ ID ใน Service account ID อ้างอิง Creating a service account สำหรับข้อมูลเพิ่มเติม
  5. เลือก CREATE AND CONTINUE
  6. ขึ้นอยู่กับกรณีการใช้งานของคุณ คุณอาจต้องการ Select a role และ Grant users access to this service account โดยใช้ส่วนที่เกี่ยวข้อง
  7. เลือก DONE
  8. เลือก Service Account ที่คุณเพิ่งสร้างขึ้นภายใต้ส่วน Service Accounts เปิดแท็บ KEYS
  9. เลือก ADD KEY > Create new key
  10. ใน modal ที่ปรากฏขึ้น เลือก JSON จากนั้นเลือก CREATE Google จะบันทึกไฟล์ลงในคอมพิวเตอร์ของคุณ

Finish your n8n credential#

เมื่อโปรเจกต์และ credentials ของ Google ได้รับการกำหนดค่าอย่างสมบูรณ์แล้ว ให้ดำเนินการ credential ของ n8n ให้เสร็จสิ้น:

  1. เปิดไฟล์ JSON ที่ดาวน์โหลดมา
  2. คัดลอก client_email และป้อนลงใน credential ของ n8n ของคุณเป็น Service Account Email
  3. คัดลอก private_key ไม่ต้องรวมเครื่องหมาย " ที่อยู่รอบๆ ป้อนค่านี้เป็น Private Key ใน credential ของ n8n ของคุณ

    Older versions of n8n

    หากคุณใช้ n8n เวอร์ชันเก่ากว่า 0.156.0 ให้แทนที่ \n ทั้งหมดในไฟล์ JSON ด้วยการขึ้นบรรทัดใหม่

  4. Optional: เลือกว่าคุณต้องการ Impersonate a User (เปิดใช้งาน) หรือไม่

    1. หากต้องการใช้ตัวเลือกนี้ คุณต้อง Enable domain-wide delegation สำหรับ Service Account ในฐานะ super admin ของ Google Workspace
    2. ป้อน Email ของผู้ใช้ที่คุณต้องการ impersonate
  5. หากคุณวางแผนที่จะใช้ credential นี้กับโหนด HTTP Request ให้เปิด Set up for use in HTTP Request node
    1. เมื่อเปิดการตั้งค่านี้ คุณจะต้องเพิ่ม Scope(s) สำหรับโหนด n8n จะเติม scope บางส่วนไว้ล่วงหน้า อ้างอิง OAuth 2.0 Scopes for Google APIs สำหรับข้อมูลเพิ่มเติม
  6. Save credentials ของคุณ

Video#

วิดีโอต่อไปนี้สาธิตขั้นตอนที่อธิบายไว้ข้างต้น

Troubleshooting#

Service Account can't access Google Drive files#

Service Account ไม่สามารถเข้าถึงไฟล์และโฟลเดอร์ Google Drive ที่ไม่ได้แชร์กับอีเมลผู้ใช้ที่เกี่ยวข้อง

  1. เข้าถึง Google Cloud Console ของคุณและคัดลอกอีเมล Service Account ของคุณ
  2. เข้าถึง Google Drive ของคุณและไปที่ไฟล์หรือโฟลเดอร์ที่กำหนด
  3. คลิกขวาที่ไฟล์หรือโฟลเดอร์แล้วเลือก Share
  4. วางอีเมล Service Account ของคุณลงใน Add People and groups
  5. เลือก Editor สำหรับการเข้าถึงแบบอ่าน-เขียน หรือ Viewer สำหรับการเข้าถึงแบบอ่านอย่างเดียว

Enable domain-wide delegation#

ในการ impersonate ผู้ใช้ด้วย Service Account คุณต้องเปิดใช้งาน domain-wide delegation สำหรับ Service Account นั้น

Not recommended

Google แนะนำให้คุณ หลีกเลี่ยงการใช้ domain-wide delegation เนื่องจากอนุญาตให้ impersonate ผู้ใช้คนใดก็ได้ (รวมถึง super admins) และอาจก่อให้เกิดความเสี่ยงด้านความปลอดภัย

ในการมอบสิทธิ์ domain-wide ให้กับ Service Account คุณต้องเป็น super administrator สำหรับโดเมน Google Workspace จากนั้น:

  1. จาก Admin console ของโดเมน Google Workspace ของคุณ เลือกเมนูแฮมเบอร์เกอร์ จากนั้นเลือก Security > Access and data control > API Controls
  2. ในบานหน้าต่าง Domain wide delegation เลือก Manage Domain Wide Delegation
  3. เลือก Add new
  4. ในฟิลด์ Client ID ป้อน Client ID ของ Service Account หากต้องการรับ Client ID:
    • เปิดโปรเจกต์ Google Cloud Console ของคุณ จากนั้นเปิดหน้า Service Accounts
    • คัดลอก OAuth 2 Client ID และใช้เป็น Client ID สำหรับ Domain Wide Delegation
  5. ในฟิลด์ OAuth scopes ป้อนรายการ scope ที่คั่นด้วยเครื่องหมายจุลภาค เพื่อให้สิทธิ์แอปพลิเคชันของคุณเข้าถึง ตัวอย่างเช่น หากแอปพลิเคชันของคุณต้องการสิทธิ์เข้าถึง Google Drive API และ Google Calendar API แบบเต็มรูปแบบทั้งโดเมน ให้ป้อน: https://www.googleapis.com/auth/drive, https://www.googleapis.com/auth/calendar
  6. เลือก Authorize

อาจใช้เวลาตั้งแต่ 5 นาทีถึง 24 ชั่วโมง ก่อนที่คุณจะสามารถ impersonate ผู้ใช้ทั้งหมดใน Workspace ของคุณได้