Google: Service Account#
การใช้ Service Account มีความซับซ้อนกว่า OAuth2 ก่อนที่คุณจะเริ่ม:
- ตรวจสอบว่า node ของคุณ เข้ากันได้ กับ Service Account หรือไม่
- ตรวจสอบให้แน่ใจว่าคุณจำเป็นต้องใช้ Service Account จริงๆ สำหรับกรณีการใช้งานส่วนใหญ่ OAuth2 เป็นตัวเลือกที่ดีกว่า
- อ่านเอกสารของ Google เกี่ยวกับ Creating and managing service accounts
Prerequisites#
- สร้างบัญชี Google Cloud
Set up Service Account#
มีสี่ขั้นตอนในการเชื่อมต่อ credential ของ n8n กับ Google Service Account:
Create a Google Cloud Console project#
ขั้นแรก สร้างโปรเจกต์ Google Cloud Console หากคุณมีโปรเจกต์อยู่แล้ว ข้ามไปที่ส่วนถัดไป:
- ลงชื่อเข้าใช้ Google Cloud Console โดยใช้ Google credentials ของคุณ
- ในเมนูด้านบน เลือก project dropdown ในแถบนำทางด้านบน แล้วเลือก New project หรือไปที่หน้า New Project โดยตรง
- ป้อน Project name และเลือก Location สำหรับ project ของคุณ
- เลือก Create
-
ตรวจสอบแถบนำทางด้านบนและตรวจสอบให้แน่ใจว่า project dropdown ได้เลือก project ของคุณแล้ว หากยังไม่ได้เลือก ให้เลือก project ที่คุณเพิ่งสร้างขึ้น
Enable APIs#
เมื่อสร้างโปรเจกต์ของคุณแล้ว เปิดใช้งาน APIs ที่คุณต้องการเข้าถึง:
- เข้าถึง Google Cloud Console - Library ของคุณ ตรวจสอบให้แน่ใจว่าคุณอยู่ใน project ที่ถูกต้อง
ตรวจสอบ project dropdown ในแถบนำทางด้านบนของ Google Cloud - ไปที่ APIs & Services > Library
- ค้นหาและเลือก API ที่คุณต้องการเปิดใช้งาน ตัวอย่างเช่น สำหรับ Gmail node ให้ค้นหาและเปิดใช้งาน Gmail API
-
บาง integrations จำเป็นต้องใช้ API อื่นๆ หรือต้องการให้คุณขอสิทธิ์เข้าถึง:
- Google Perspective: Request API Access
- Google Ads: รับ Developer Token
ต้องการ 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 ด้วย
-
เลือก ENABLE
Set up Google Cloud Service Account#
-
เข้าถึง Google Cloud Console - Library ของคุณ ตรวจสอบให้แน่ใจว่าคุณอยู่ในโปรเจกต์ที่ถูกต้อง
ตรวจสอบ dropdown ของโปรเจกต์ในแถบนำทางด้านบนของ Google Cloud -
เลือกเมนูแฮมเบอร์เกอร์ > APIs & Services > Credentials Google จะนำคุณไปยังหน้า Credentials ของคุณ
- เลือก + CREATE CREDENTIALS > Service account
- ป้อนชื่อใน Service account name และ ID ใน Service account ID อ้างอิง Creating a service account สำหรับข้อมูลเพิ่มเติม
- เลือก CREATE AND CONTINUE
- ขึ้นอยู่กับกรณีการใช้งานของคุณ คุณอาจต้องการ Select a role และ Grant users access to this service account โดยใช้ส่วนที่เกี่ยวข้อง
- เลือก DONE
- เลือก Service Account ที่คุณเพิ่งสร้างขึ้นภายใต้ส่วน Service Accounts เปิดแท็บ KEYS
- เลือก ADD KEY > Create new key
- ใน modal ที่ปรากฏขึ้น เลือก JSON จากนั้นเลือก CREATE Google จะบันทึกไฟล์ลงในคอมพิวเตอร์ของคุณ
Finish your n8n credential#
เมื่อโปรเจกต์และ credentials ของ Google ได้รับการกำหนดค่าอย่างสมบูรณ์แล้ว ให้ดำเนินการ credential ของ n8n ให้เสร็จสิ้น:
- เปิดไฟล์ JSON ที่ดาวน์โหลดมา
- คัดลอก
client_email
และป้อนลงใน credential ของ n8n ของคุณเป็น Service Account Email -
คัดลอก
private_key
ไม่ต้องรวมเครื่องหมาย"
ที่อยู่รอบๆ ป้อนค่านี้เป็น Private Key ใน credential ของ n8n ของคุณOlder versions of n8n
หากคุณใช้ n8n เวอร์ชันเก่ากว่า 0.156.0 ให้แทนที่
\n
ทั้งหมดในไฟล์ JSON ด้วยการขึ้นบรรทัดใหม่ -
Optional: เลือกว่าคุณต้องการ Impersonate a User (เปิดใช้งาน) หรือไม่
- หากต้องการใช้ตัวเลือกนี้ คุณต้อง Enable domain-wide delegation สำหรับ Service Account ในฐานะ super admin ของ Google Workspace
- ป้อน Email ของผู้ใช้ที่คุณต้องการ impersonate
- หากคุณวางแผนที่จะใช้ credential นี้กับโหนด HTTP Request ให้เปิด Set up for use in HTTP Request node
- เมื่อเปิดการตั้งค่านี้ คุณจะต้องเพิ่ม Scope(s) สำหรับโหนด n8n จะเติม scope บางส่วนไว้ล่วงหน้า อ้างอิง OAuth 2.0 Scopes for Google APIs สำหรับข้อมูลเพิ่มเติม
- Save credentials ของคุณ
Video#
วิดีโอต่อไปนี้สาธิตขั้นตอนที่อธิบายไว้ข้างต้น
Troubleshooting#
Service Account can't access Google Drive files#
Service Account ไม่สามารถเข้าถึงไฟล์และโฟลเดอร์ Google Drive ที่ไม่ได้แชร์กับอีเมลผู้ใช้ที่เกี่ยวข้อง
- เข้าถึง Google Cloud Console ของคุณและคัดลอกอีเมล Service Account ของคุณ
- เข้าถึง Google Drive ของคุณและไปที่ไฟล์หรือโฟลเดอร์ที่กำหนด
- คลิกขวาที่ไฟล์หรือโฟลเดอร์แล้วเลือก Share
- วางอีเมล Service Account ของคุณลงใน Add People and groups
- เลือก 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 จากนั้น:
- จาก Admin console ของโดเมน Google Workspace ของคุณ เลือกเมนูแฮมเบอร์เกอร์ จากนั้นเลือก Security > Access and data control > API Controls
- ในบานหน้าต่าง Domain wide delegation เลือก Manage Domain Wide Delegation
- เลือก Add new
- ในฟิลด์ Client ID ป้อน Client ID ของ Service Account หากต้องการรับ Client ID:
- เปิดโปรเจกต์ Google Cloud Console ของคุณ จากนั้นเปิดหน้า Service Accounts
- คัดลอก OAuth 2 Client ID และใช้เป็น Client ID สำหรับ Domain Wide Delegation
- ในฟิลด์ OAuth scopes ป้อนรายการ scope ที่คั่นด้วยเครื่องหมายจุลภาค เพื่อให้สิทธิ์แอปพลิเคชันของคุณเข้าถึง ตัวอย่างเช่น หากแอปพลิเคชันของคุณต้องการสิทธิ์เข้าถึง Google Drive API และ Google Calendar API แบบเต็มรูปแบบทั้งโดเมน ให้ป้อน:
https://www.googleapis.com/auth/drive, https://www.googleapis.com/auth/calendar
- เลือก Authorize
อาจใช้เวลาตั้งแต่ 5 นาทีถึง 24 ชั่วโมง ก่อนที่คุณจะสามารถ impersonate ผู้ใช้ทั้งหมดใน Workspace ของคุณได้