คู่มือนี้อธิบายวิธีตั้งค่าและใช้บัญชีบริการเพื่อเข้าถึง Google Chat API ในนามของแอป Chat โดยจะอธิบายวิธีสร้างบัญชีบริการก่อน จากนั้นจะแสดงวิธี เขียนสคริปต์ที่ใช้บัญชีบริการเพื่อตรวจสอบสิทธิ์กับ Chat API และโพสต์ข้อความในพื้นที่ Chat
เมื่อมีการตรวจสอบสิทธิ์ด้วยบัญชีบริการ แอป Chat ต้องเป็นสมาชิกในพื้นที่ดังกล่าวจึงจะรับข้อมูลหรือดำเนินการในพื้นที่ Chat ได้ เช่น หากต้องการแสดงรายชื่อสมาชิกของพื้นที่ทำงาน หรือสร้างข้อความในพื้นที่ทำงาน แอป Chat จะต้องเป็นสมาชิกของพื้นที่ทำงานนั้นด้วย ข้อยกเว้นเพียงอย่างเดียวคือเมื่อแอปใน Chat สร้างพื้นที่ทำงาน ที่มีการตรวจสอบสิทธิ์แอป ในกรณีนี้แอปจะสร้างพื้นที่ทำงานและ เป็นสมาชิกโดยอัตโนมัติ
เมธอด Google Chat API ที่รองรับการให้สิทธิ์แอปด้วยขอบเขตการให้สิทธิ์
ที่มีชื่อขึ้นต้นด้วย https://www.googleapis.com/auth/chat.app.*
ต้องมี
การอนุมัติจากผู้ดูแลระบบแบบครั้งเดียว
เมธอด Google Chat API ที่รองรับการให้สิทธิ์แอปด้วยhttps://www.googleapis.com/auth/chat.bot
ขอบเขตการให้สิทธิ์ไม่จำเป็นต้องได้รับการอนุมัติเพิ่มเติม
หากแอปใน Chat ของคุณต้องเข้าถึงข้อมูลผู้ใช้หรือดำเนินการในนามของผู้ใช้ ให้ตรวจสอบสิทธิ์ในฐานะผู้ใช้แทน หากคุณเป็นผู้ดูแลระบบโดเมน คุณสามารถมอบสิทธิ์ทั่วทั้งโดเมน เพื่อให้สิทธิ์บัญชีบริการของแอป Chat ในการเข้าถึงข้อมูลของผู้ใช้ได้โดยไม่ต้องขอความยินยอมจากผู้ใช้แต่ละคน ดูข้อมูลเพิ่มเติมได้ที่ตรวจสอบสิทธิ์และให้สิทธิ์โดยใช้การมอบสิทธิ์ทั่วทั้งโดเมน
ดูข้อมูลเพิ่มเติมเกี่ยวกับเวลาที่แอปใน Chat ต้องมีการตรวจสอบสิทธิ์และ ประเภทการตรวจสอบสิทธิ์ที่จะใช้ได้ที่ ประเภทการตรวจสอบสิทธิ์ที่จำเป็น ในภาพรวมการตรวจสอบสิทธิ์และการให้สิทธิ์ของ Chat API
ข้อกำหนดเบื้องต้น
Java
- JDK 1.7 ขึ้นไป
- เครื่องมือการจัดการแพ็กเกจ Maven
-
โปรเจ็กต์ Maven ที่เริ่มต้นแล้ว หากต้องการเริ่มต้นโปรเจ็กต์ใหม่ ให้เรียกใช้คำสั่งต่อไปนี้ในอินเทอร์เฟซบรรทัดคำสั่ง
mvn archetype:generate -DgroupId=com.google.chat.app.authsample -DartifactId=auth-sample-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
- แอป Google Chat ที่รับและตอบสนองต่อเหตุการณ์การโต้ตอบ หากต้องการสร้างแอป Chat แบบอินเทอร์แอกทีฟโดยใช้บริการ HTTP ให้ทำตามการเริ่มต้นอย่างรวดเร็วนี้
- เพิ่มแอป Chat ลงในพื้นที่ทำงาน หากต้องการเพิ่มแอป Chat โปรดดู ทดสอบฟีเจอร์แบบอินเทอร์แอกทีฟสำหรับแอป Google Chat
Python
- Python 3.6 ขึ้นไป
- เครื่องมือจัดการแพ็กเกจ pip
- แอป Google Chat ที่รับและตอบสนองต่อเหตุการณ์การโต้ตอบ หากต้องการสร้างแอป Chat แบบอินเทอร์แอกทีฟโดยใช้บริการ HTTP ให้ทำตามการเริ่มต้นอย่างรวดเร็วนี้
- เพิ่มแอป Chat ลงในพื้นที่ทำงาน หากต้องการเพิ่มแอป Chat โปรดดู ทดสอบฟีเจอร์แบบอินเทอร์แอกทีฟสำหรับแอป Google Chat
Node.js
- Node.js 14 ขึ้นไป
- เครื่องมือจัดการแพ็กเกจ npm
-
โปรเจ็กต์ Node.js ที่เริ่มต้นแล้ว หากต้องการเริ่มต้นโปรเจ็กต์ใหม่ ให้สร้างและ
เปลี่ยนไปใช้โฟลเดอร์ใหม่ จากนั้นเรียกใช้คำสั่งต่อไปนี้ในอินเทอร์เฟซบรรทัดคำสั่ง
npm init
- แอป Google Chat ที่รับและตอบสนองต่อเหตุการณ์การโต้ตอบ หากต้องการสร้างแอป Chat แบบอินเทอร์แอกทีฟโดยใช้บริการ HTTP ให้ทำตามการเริ่มต้นอย่างรวดเร็วนี้
- เพิ่มแอป Chat ลงในพื้นที่ทำงาน หากต้องการเพิ่มแอป Chat โปรดดู ทดสอบฟีเจอร์แบบอินเทอร์แอกทีฟสำหรับแอป Google Chat
Apps Script
- แอป Google Chat ที่รับและตอบสนองต่อเหตุการณ์การโต้ตอบ หากต้องการสร้าง แอป Chat แบบอินเทอร์แอกทีฟใน Apps Script ให้ทำตามการเริ่มต้นอย่างรวดเร็วนี้
- เพิ่มแอป Chat ลงในพื้นที่ทำงาน หากต้องการเพิ่มแอป Chat โปรดดู ทดสอบฟีเจอร์แบบอินเทอร์แอกทีฟสำหรับแอป Google Chat
ขั้นตอนที่ 1: สร้างบัญชีบริการในคอนโซล Google Cloud
สร้างบัญชีบริการที่แอป Chat ใช้เพื่อ เข้าถึง Google APIs ได้
สร้างบัญชีบริการ
หากต้องการสร้างบัญชีบริการ ให้ทำตามขั้นตอนต่อไปนี้
คอนโซล Google Cloud
- ใน Google Cloud Console ให้ไปที่เมนู > IAM & Admin > บัญชีบริการ
- คลิกสร้างบัญชีบริการ
- กรอกรายละเอียดบัญชีบริการ แล้วคลิกสร้างและต่อไป
- ไม่บังคับ: มอบหมายบทบาทให้กับบัญชีบริการเพื่อให้สิทธิ์เข้าถึงทรัพยากรของโปรเจ็กต์ Google Cloud ดูรายละเอียดเพิ่มเติมได้ที่การให้ เปลี่ยน และเพิกถอนสิทธิ์เข้าถึงทรัพยากร
- คลิกต่อไป
- ไม่บังคับ: ป้อนผู้ใช้หรือกลุ่มที่จัดการและดำเนินการกับบัญชีบริการนี้ได้ โปรดดูรายละเอียดเพิ่มเติมที่หัวข้อการจัดการการแอบอ้างเป็นบัญชีบริการ
- คลิกเสร็จสิ้น จดอีเมลของบัญชีบริการไว้
gcloud CLI
- สร้างบัญชีบริการโดยทำดังนี้
gcloud iam service-accounts create
SERVICE_ACCOUNT_NAME
\ --display-name="SERVICE_ACCOUNT_NAME
" - ไม่บังคับ: มอบหมายบทบาทให้กับบัญชีบริการเพื่อให้สิทธิ์เข้าถึงทรัพยากรของโปรเจ็กต์ Google Cloud ดูรายละเอียดเพิ่มเติมได้ที่การให้ เปลี่ยน และเพิกถอนสิทธิ์เข้าถึงทรัพยากร
บัญชีบริการจะปรากฏในหน้าบัญชีบริการ จากนั้นสร้างคีย์ส่วนตัว สำหรับบัญชีบริการ
สร้างคีย์ส่วนตัว
หากต้องการสร้างและดาวน์โหลดคีย์ส่วนตัวสำหรับบัญชีบริการ ให้ทำตามขั้นตอนต่อไปนี้
- ใน Google Cloud Console ให้ไปที่เมนู > IAM & Admin > บัญชีบริการ
- เลือกบัญชีบริการ
- คลิกคีย์ > เพิ่มคีย์ > สร้างคีย์ใหม่
- เลือก JSON แล้วคลิกสร้าง
ระบบจะสร้างคู่คีย์สาธารณะ/ส่วนตัวใหม่และดาวน์โหลดลงในเครื่องของคุณเป็นไฟล์ใหม่ บันทึกไฟล์ JSON ที่ดาวน์โหลดเป็น
credentials.json
ใน ไดเรกทอรีการทำงาน ไฟล์นี้เป็นสำเนาเดียวของคีย์นี้ ดูข้อมูลเกี่ยวกับวิธีจัดเก็บคีย์อย่างปลอดภัยได้ที่การจัดการคีย์ของบัญชีบริการ - คลิกปิด
ดูข้อมูลเพิ่มเติมเกี่ยวกับบัญชีบริการได้ที่ บัญชีบริการ ในเอกสารประกอบของ Google Cloud IAM
จากนั้นสร้างไคลเอ็นต์ OAuth ที่เข้ากันได้กับ Google Workspace Marketplace สำหรับบัญชีบริการนี้
รับการอนุมัติจากผู้ดูแลระบบ
หากต้องการใช้https://www.googleapis.com/auth/chat.bot
ขอบเขตการให้สิทธิ์
คุณไม่จำเป็นต้องได้รับการอนุมัติจากผู้ดูแลระบบ ไปที่
ขั้นตอนที่ 2: ติดตั้งไลบรารีของไคลเอ็นต์ Google และ
การอ้างอิงอื่นๆ
ตัวอย่างในคู่มือนี้ใช้https://www.googleapis.com/auth/chat.bot
ขอบเขตการให้สิทธิ์ ดังนั้นหากคุณทำตามตัวอย่าง ให้ไปที่ขั้นตอนที่ 2
หากต้องการใช้ขอบเขตการให้สิทธิ์ที่ขึ้นต้นด้วย
https://www.googleapis.com/auth/chat.app.*
แอป Chat ของคุณต้องได้รับ
การอนุมัติจากผู้ดูแลระบบแบบครั้งเดียว
หากต้องการรับการอนุมัติจากผู้ดูแลระบบ คุณต้องเตรียมบัญชีบริการของแอป Chat ด้วยข้อมูลต่อไปนี้
- ไคลเอ็นต์ OAuth ที่เข้ากันได้กับ Google Workspace Marketplace
- การกำหนดค่าแอปใน SDK ของ Google Workspace Marketplace
สร้างไคลเอ็นต์ OAuth ที่เข้ากันได้กับ Google Workspace Marketplace
หากต้องการสร้างไคลเอ็นต์ OAuth ที่เข้ากันได้กับ Google Workspace Marketplace ให้ทำตามขั้นตอนต่อไปนี้
ใน Google Cloud Console ให้ไปที่เมนู > IAM และผู้ดูแลระบบ > บัญชีบริการ
คลิกบัญชีบริการที่คุณสร้างไว้สำหรับ แอป Chat
คลิกการตั้งค่าขั้นสูง
คลิกสร้างไคลเอ็นต์ OAuth ที่เข้ากันได้กับ Google Workspace Marketplace
คลิกต่อไป
ข้อความยืนยันจะปรากฏขึ้นเพื่อแจ้งว่าระบบได้สร้างไคลเอ็นต์ OAuth ที่เข้ากันได้กับ Google Workspace Marketplace แล้ว
กำหนดค่าแอป Chat ใน SDK ของ Google Workspace Marketplace
หากต้องการกำหนดค่าแอป Chat ใน SDK ของ Google Workspace Marketplace ให้ทำตามขั้นตอนต่อไปนี้
เปิดใช้ SDK ของ Google Workspace Marketplace ใน Google Cloud Console
ในคอนโซล Google Cloud ให้ไปที่ เมนู > API และบริการ > API และบริการที่เปิดใช้ > Google Workspace Marketplace SDK > การกำหนดค่าแอป
กรอกข้อมูลในหน้าการกำหนดค่าแอปให้ครบถ้วน วิธีกำหนดค่าแอปแชท ขึ้นอยู่กับกลุ่มเป้าหมายที่คุณต้องการ และปัจจัยอื่นๆ หากต้องการความช่วยเหลือในการกรอกข้อมูลในหน้าการกำหนดค่าแอป โปรดดูกำหนดค่าแอปใน SDK ของ Google Workspace Marketplace สำหรับวัตถุประสงค์ของคู่มือนี้ ให้ป้อนข้อมูลต่อไปนี้
- เลือกส่วนตัวในส่วนระดับการมองเห็นแอป
- ในส่วนการตั้งค่าการติดตั้ง ให้เลือกการติดตั้งสำหรับผู้ใช้แต่ละราย + ผู้ดูแลระบบ
- เลือกแอปใน Chat ในส่วนการผสานรวมแอป
ในส่วนขอบเขต OAuth ให้ป้อน ขอบเขตการตรวจสอบสิทธิ์ ทั้งหมดที่แอป Chat ใช้
ในส่วนข้อมูลนักพัฒนาแอป ให้ป้อนชื่อนักพัฒนาแอป URL เว็บไซต์ของนักพัฒนาแอป และอีเมลของนักพัฒนาแอป
คลิกบันทึกฉบับร่าง
ขอการอนุมัติจากผู้ดูแลระบบ
ตอนนี้บัญชีบริการได้รับการกำหนดค่าให้รับการอนุมัติจากผู้ดูแลระบบแล้ว ให้ขอรับการอนุมัติจากผู้ดูแลระบบ Google Workspace ที่ให้สิทธิ์อนุมัติได้ โดยทำตามขั้นตอนใน ตั้งค่าการให้สิทธิ์สำหรับแอป Chat
ขั้นตอนที่ 2: ติดตั้งไลบรารีของไคลเอ็นต์ Google และทรัพยากร Dependency อื่นๆ
ติดตั้งไลบรารีของไคลเอ็นต์ Google และทรัพยากร Dependency อื่นๆ ที่จำเป็นสำหรับ โปรเจ็กต์
Java
หากต้องการเพิ่มไลบรารีของไคลเอ็นต์ Google และการอ้างอิงอื่นๆ ที่จำเป็นลงในโปรเจ็กต์ Maven ให้แก้ไขไฟล์ pom.xml
ในไดเรกทอรีของโปรเจ็กต์ แล้วเพิ่มการอ้างอิงต่อไปนี้
<dependencies>
<!-- ... existing dependencies ... -->
<dependency>
<groupId>com.google.apis</groupId>
<artifactId>google-api-services-chat</artifactId>
<version>v1-rev20230905-2.0.0</version>
</dependency>
<dependency>
<groupId>com.google.auth</groupId>
<artifactId>google-auth-library-oauth2-http</artifactId>
<version>1.19.0</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.10.1</version>
</dependency>
</dependencies>
Python
หากยังไม่ได้ติดตั้งไลบรารีของไคลเอ็นต์ Google สำหรับ Python ให้เรียกใช้คำสั่งต่อไปนี้ในอินเทอร์เฟซบรรทัดคำสั่ง
pip3 install --upgrade google-api-python-client google-auth
Node.js
หากต้องการเพิ่มไลบรารีของไคลเอ็นต์ Google ลงในโปรเจ็กต์ Node.js ให้เปลี่ยนไปที่ไดเรกทอรีของโปรเจ็กต์ แล้วเรียกใช้คำสั่งต่อไปนี้ในอินเทอร์เฟซบรรทัดคำสั่ง
npm install "@googleapis/chat"
Apps Script
ตัวอย่างนี้ใช้ไลบรารี OAuth2 สำหรับ Apps Script เพื่อสร้างโทเค็น JWT สำหรับการตรวจสอบสิทธิ์บัญชีบริการ วิธีเพิ่มไลบรารี ลงในโปรเจ็กต์ Apps Script
- คลิกโปรแกรมตัดต่อ ทางด้านซ้าย
- ที่ด้านซ้าย ข้างห้องสมุด ให้คลิกเพิ่มห้องสมุด
- ป้อนรหัสสคริปต์
1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF
- คลิกค้นหา แล้วคลิกเพิ่ม
ตัวอย่างนี้ใช้ บริการ Chat ขั้นสูง เพื่อเรียกใช้ Google Chat API วิธีเปิดใช้บริการสำหรับโปรเจ็กต์ Apps Script มีดังนี้
- คลิกโปรแกรมตัดต่อ ทางด้านซ้าย
- ทางด้านซ้าย ให้คลิกเพิ่มบริการ ข้างบริการ
- เลือก Google Chat API
- เลือก v1 ในเวอร์ชัน
- คลิกเพิ่ม
คุณสามารถใช้ภาษาใดก็ได้ที่ไลบรารีของไคลเอ็นต์ของเรารองรับ
ขั้นตอนที่ 3: เขียนสคริปต์ที่ใช้บัญชีบริการเพื่อตรวจสอบสิทธิ์กับ Chat API
โค้ดต่อไปนี้จะตรวจสอบสิทธิ์ด้วย Chat API โดยใช้บัญชีบริการ จากนั้นจะโพสต์ข้อความไปยังพื้นที่ทำงานใน Chat
Java
- เปิดไฟล์
src/main/java/com/google/chat/app/authsample/App.java
ในไดเรกทอรีของโปรเจ็กต์ แทนที่เนื้อหาใน
App.java
ด้วยโค้ดต่อไปนี้package com.google.chat.app.authsample; import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; import com.google.api.client.http.HttpRequestInitializer; import com.google.api.client.json.gson.GsonFactory; import com.google.api.services.chat.v1.HangoutsChat; import com.google.api.services.chat.v1.model.Message; import com.google.auth.http.HttpCredentialsAdapter; import com.google.auth.oauth2.GoogleCredentials; /** * Authenticates with Chat API using service account credentials, * then creates a Chat message. */ public class App { // Specify required scopes. private static final String CHAT_SCOPE = "https://www.googleapis.com/auth/chat.bot"; // Specify service account details. private static final String PRIVATE_KEY_RESOURCE_URI = "/credentials.json"; public static void main( String[] args ) { try { // Run app. Message response = App.createChatMessage(); // Print details about the created message. System.out.println(response); } catch (Exception e) { e.printStackTrace(); } } private static Message createChatMessage() throws Exception { // Build the Chat API client and authenticate with the service account. GoogleCredentials credentials = GoogleCredentials.fromStream( App.class.getResourceAsStream(PRIVATE_KEY_RESOURCE_URI)) .createScoped(CHAT_SCOPE); HttpRequestInitializer requestInitializer = new HttpCredentialsAdapter(credentials); HangoutsChat chatService = new HangoutsChat.Builder( GoogleNetHttpTransport.newTrustedTransport(), GsonFactory.getDefaultInstance(), requestInitializer) .setApplicationName("auth-sample-app") .build(); // The space to create the message in. // // Replace SPACE_NAME with a space name. // Obtain the space name from the spaces resource of Chat API, // or from a space's URL. String spaceName = "spaces/SPACE_NAME"; // Create a Chat message. Message message = new Message().setText("Hello, world!"); return chatService.spaces().messages().create(spaceName, message).execute(); } }
ในโค้ด ให้แทนที่
SPACE_NAME
ด้วยชื่อพื้นที่ ซึ่งคุณรับได้จากเมธอดspaces.list
ใน Chat API หรือจาก URL ของพื้นที่สร้างไดเรกทอรีย่อยใหม่ชื่อ
resources
ภายในไดเรกทอรีของโปรเจ็กต์ตรวจสอบว่าไฟล์คีย์ส่วนตัวสำหรับบัญชีบริการของคุณมีชื่อว่า
credentials.json
แล้วคัดลอกไปยังไดเรกทอรีย่อยresources
หากต้องการกำหนดค่า Maven ให้รวมไฟล์คีย์ส่วนตัวไว้ในแพ็กเกจโปรเจ็กต์ ให้แก้ไขไฟล์
pom.xml
ในไดเรกทอรีของโปรเจ็กต์ แล้วเพิ่มการกำหนดค่าต่อไปนี้ลงในส่วน<build>
<build> <!-- ... existing configurations ... --> <resources> <resource> <directory>resources</directory> </resource> </resources> </build>
หากต้องการกำหนดค่า Maven ให้รวมการขึ้นต่อกันไว้ในแพ็กเกจโปรเจ็กต์และ เรียกใช้คลาสหลักของแอปพลิเคชัน ให้แก้ไขไฟล์
pom.xml
ในไดเรกทอรีของโปรเจ็กต์ และเพิ่มการกำหนดค่าต่อไปนี้ลงในส่วน<plugins>
<plugins> <!-- ... existing configurations ... --> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <archive> <manifest> <mainClass>com.google.chat.app.authsample.App</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> </plugin> </plugins>
Python
- สร้างไฟล์ชื่อ
chat_app_auth.py
ในไดเรกทอรีการทำงาน ใส่โค้ดต่อไปนี้ใน
chat_app_auth.py
from apiclient.discovery import build from google.oauth2 import service_account # Specify required scopes. SCOPES = ['https://www.googleapis.com/auth/chat.bot'] # Specify service account details. creds = service_account.Credentials.from_service_account_file( 'credentials.json', scopes=SCOPES) # Build the URI and authenticate with the service account. chat = build('chat', 'v1', credentials=creds) # Create a Chat message. result = chat.spaces().messages().create( # The space to create the message in. # # Replace SPACE_NAME with a space name. # Obtain the space name from the spaces resource of Chat API, # or from a space's URL. parent='spaces/SPACE_NAME', # The message to create. body={'text': 'Hello, world!'} ).execute() # Prints details about the created message. print(result)
ในโค้ด ให้แทนที่
SPACE_NAME
ด้วยชื่อพื้นที่ ซึ่งคุณรับได้จากเมธอดspaces.list
ใน Chat API หรือจาก URL ของพื้นที่ ตรวจสอบว่าไฟล์คีย์ส่วนตัวสำหรับบัญชีบริการมีชื่อว่าcredentials.json
Node.js
- สร้างไฟล์ชื่อ
chat_app_auth.js
ในไดเรกทอรีของโปรเจ็กต์ ใส่โค้ดต่อไปนี้ใน
chat_app_auth.js
const chat = require('@googleapis/chat'); async function createMessage() { const auth = new chat.auth.GoogleAuth({ // Specify service account details. keyFilename: 'credentials.json', // Specify required scopes. scopes: ['https://www.googleapis.com/auth/chat.bot'] }); const authClient = await auth.getClient(); // Create the Chat API client and authenticate with the service account. const chatClient = await chat.chat({ version: 'v1', auth: authClient }); // Create a Chat message. const result = await chatClient.spaces.messages.create({ // The space to create the message in. // // Replace SPACE_NAME with a space name. // Obtain the space name from the spaces resource of Chat API, // or from a space's URL. parent: 'spaces/SPACE_NAME', // The message to create. requestBody: { 'text': 'Hello, world!' } }); return result; } // Execute function then print details about the created message. createMessage().then(console.log);
ในโค้ด ให้แทนที่
SPACE_NAME
ด้วยชื่อพื้นที่ ซึ่งคุณรับได้จากเมธอดspaces.list
ใน Chat API หรือจาก URL ของพื้นที่ ตรวจสอบว่าไฟล์คีย์ส่วนตัวสำหรับบัญชีบริการมีชื่อว่าcredentials.json
Apps Script
ในเครื่องมือแก้ไข Apps Script ให้แก้ไขไฟล์
appsscript.json
และเพิ่มขอบเขต OAuth ที่จำเป็นเพื่อส่งคำขอภายนอกเพื่อรับ โทเค็น OAuth ของบัญชีบริการ"oauthScopes": [ "https://www.googleapis.com/auth/script.external_request" ]
บันทึกโค้ดต่อไปนี้ในไฟล์ชื่อ
ChatAppAuth.gs
ใน โปรเจ็กต์ Apps Script// Specify the contents of the file credentials.json. const CREDENTIALS = CREDENTIALS; const SCOPE = 'https://www.googleapis.com/auth/chat.bot'; // The space to create the message in. // // Replace SPACE_NAME with a space name. // Obtain the space name from the spaces resource of Chat API, // or from a space's URL. const PARENT = 'spaces/SPACE_NAME' /** * Authenticates with Chat API using app credentials, then posts a message. */ function createMessageWithAppCredentials() { try { const service = getService_(); if (!service.hasAccess()) { console.error(service.getLastError()); return; } // Specify the message to create. const message = {'text': 'Hello world!'}; // Call Chat API with a service account to create a message. const result = Chat.Spaces.Messages.create( message, PARENT, {}, // Authenticate with the service account token. {'Authorization': 'Bearer ' + service.getAccessToken()}); // Log details about the created message. console.log(result); } catch (err) { // TODO (developer) - Handle exception. console.log('Failed to create message with error %s', err.message); } } /** * Configures the OAuth library to authenticate with the service account. */ function getService_() { return OAuth2.createService(CREDENTIALS.client_email) .setTokenUrl('https://oauth2.googleapis.com/token') .setPrivateKey(CREDENTIALS.private_key) .setIssuer(CREDENTIALS.client_email) .setSubject(CREDENTIALS.client_email) .setScope(SCOPE) .setPropertyStore(PropertiesService.getScriptProperties()); }
ในโค้ด ให้แทนที่
CREDENTIALS
ด้วย เนื้อหาของไฟล์credentials.json
ในโค้ด ให้แทนที่
SPACE_NAME
ด้วยชื่อพื้นที่ ซึ่งคุณรับได้จากเมธอดspaces.list
ใน Chat API หรือจาก URL ของพื้นที่
ขั้นตอนที่ 4: เรียกใช้ตัวอย่างที่สมบูรณ์
ในไดเรกทอรีการทำงาน ให้สร้างและเรียกใช้ตัวอย่างโดยทำดังนี้
Java
mvn compile assembly:single
java -jar target/auth-sample-app-1.0-SNAPSHOT-jar-with-dependencies.jar
Python
python3 chat_app_auth.py
Node.js
node chat_app_auth.js
Apps Script
เปิดไฟล์ ChatAppAuth.gs
ในตัวแก้ไข Apps Script แล้ว
คลิกเรียกใช้
สคริปต์ของคุณจะส่งคำขอที่ผ่านการตรวจสอบสิทธิ์ไปยัง Chat API ซึ่งจะตอบกลับโดยการโพสต์ข้อความในพื้นที่ทำงานของ Chat เป็นแอปใน Chat
แก้ปัญหาตัวอย่าง
ส่วนนี้จะอธิบายปัญหาที่พบบ่อยซึ่งคุณอาจพบขณะพยายาม เรียกใช้ตัวอย่างนี้
คุณไม่ได้รับอนุญาตให้ใช้แอปนี้
เมื่อเรียกใช้สคริปต์ คุณอาจได้รับข้อผิดพลาดที่ระบุว่า
<HttpError 403 when requesting https://chat.googleapis.com/v1/spaces/{space}/messages?alt=json returned "You are not permitted to use this app". Details: "You are not permitted to use this app">
ข้อความแสดงข้อผิดพลาดนี้หมายความว่าแอป Chat ไม่มี สิทธิ์สร้างข้อความ Chat ในพื้นที่ทำงาน Chat ที่ระบุ
หากต้องการแก้ไขข้อผิดพลาด ให้เพิ่มแอป Chat ไปยังพื้นที่ใน Chat ที่ระบุไว้ในสคริปต์
ผู้ดูแลระบบต้องให้ขอบเขตการให้สิทธิ์ OAuth ที่จำเป็นแก่แอปสำหรับการดำเนินการนี้
เมื่อเรียกใช้สคริปต์ คุณอาจได้รับข้อผิดพลาดที่ระบุว่า
<HttpError 403 when requesting https://chat.googleapis.com/v1/spaces/{space}?alt=json returned "The administrator must grant the app the required OAuth authorization scope for this action.". Details: "The administrator must grant the app the required OAuth authorization scope for this action.">
ข้อความแสดงข้อผิดพลาดนี้หมายความว่าผู้ดูแลระบบ Google Workspace ยังไม่ได้ให้
การอนุมัติแบบครั้งเดียวแก่แอป Chat เพื่อใช้ขอบเขตการให้สิทธิ์ที่ขึ้นต้นด้วยชื่อ https://www.googleapis.com/auth/chat.app.*
วิธีแก้ไขข้อผิดพลาด
- ขอให้ผู้ดูแลระบบ Google Workspace อนุมัติแอป Chat ของคุณ
เมื่อจัดการข้อผิดพลาดนี้ในตรรกะของแอป Chat
ให้พิจารณาส่งข้อความเพื่อประกาศว่า
แอป Chat ต้องได้รับการอนุมัติจากผู้ดูแลระบบเพื่อดำเนินการ
ตามคำขอ เช่น
To perform this action, I need approval. <https://support.google.com/a?p=chat-app-auth|Learn more>.
- หากเมธอด Google Chat API รองรับ
https://www.googleapis.com/auth/chat.bot
ขอบเขตการให้สิทธิ์ที่ไม่ ต้องได้รับการอนุมัติจากผู้ดูแลระบบ ให้พิจารณาใช้วิธีดังกล่าวแทน หากต้องการตรวจสอบว่าเมธอดใดรองรับขอบเขตการให้สิทธิ์ใด โปรดดูเอกสารอ้างอิงของ Google Chat API
หัวข้อที่เกี่ยวข้อง
- ดูว่า Chat API ทำอะไรได้อีกบ้างโดยอ่านเอกสารอ้างอิงของ Chat API
- หากใช้ขอบเขตการให้สิทธิ์ OAuth ที่ขึ้นต้นด้วย
https://www.googleapis.com/auth/chat.app.*
โปรดดูวิธีที่ ผู้ดูแลระบบให้การอนุมัติแบบครั้งเดียว