คู่มือนี้จะอธิบายวิธีตั้งค่าและใช้บัญชีบริการเพื่อเข้าถึง 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
ไม่จำเป็นต้องได้รับการอนุมัติเพิ่มเติม https://www.googleapis.com/auth/chat.app.*
ขอบเขตการให้สิทธิ์พร้อมใช้งานในรุ่นตัวอย่างสำหรับนักพัฒนาแอป
หากแอปใน 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 API
สร้างบัญชีบริการ
หากต้องการสร้างบัญชีบริการ ให้ทำตามขั้นตอนต่อไปนี้
คอนโซล Google Cloud
- ในคอนโซล Google Cloud ให้ไปที่เมนู > IAM และผู้ดูแลระบบ > บัญชีบริการ
- คลิกสร้างบัญชีบริการ
- กรอกรายละเอียดบัญชีบริการ แล้วคลิกสร้างและดำเนินการต่อ
- ไม่บังคับ: มอบหมายบทบาทให้กับบัญชีบริการเพื่อมอบสิทธิ์เข้าถึงทรัพยากรของโปรเจ็กต์ Google Cloud ดูรายละเอียดเพิ่มเติมได้ที่การให้ เปลี่ยน และเพิกถอนสิทธิ์เข้าถึงทรัพยากร
- คลิกต่อไป
- ไม่บังคับ: ป้อนผู้ใช้หรือกลุ่มที่จัดการและดําเนินการกับบัญชีบริการนี้ได้ โปรดดูรายละเอียดเพิ่มเติมที่หัวข้อการจัดการการแอบอ้างเป็นบัญชีบริการ
- คลิกเสร็จสิ้น จดบันทึกอีเมลของบัญชีบริการไว้
gcloud CLI
- สร้างบัญชีบริการโดยทำดังนี้
gcloud iam service-accounts create
SERVICE_ACCOUNT_NAME
\ --display-name="SERVICE_ACCOUNT_NAME
" - ไม่บังคับ: มอบหมายบทบาทให้กับบัญชีบริการเพื่อมอบสิทธิ์เข้าถึงทรัพยากรของโปรเจ็กต์ Google Cloud ดูรายละเอียดเพิ่มเติมได้ที่การให้ เปลี่ยน และเพิกถอนสิทธิ์เข้าถึงทรัพยากร
บัญชีบริการจะปรากฏในหน้าบัญชีบริการ ถัดไป ให้สร้างคีย์ส่วนตัวสำหรับบัญชีบริการ
สร้างคีย์ส่วนตัว
หากต้องการสร้างและดาวน์โหลดคีย์ส่วนตัวสำหรับบัญชีบริการ ให้ทำตามขั้นตอนต่อไปนี้
- ในคอนโซล Google Cloud ให้ไปที่เมนู > IAM และผู้ดูแลระบบ > บัญชีบริการ
- เลือกบัญชีบริการ
- คลิกคีย์ > เพิ่มคีย์ > สร้างคีย์ใหม่
- เลือก JSON แล้วคลิกสร้าง
ระบบจะสร้างคู่คีย์สาธารณะ/ส่วนตัวใหม่และดาวน์โหลดลงในเครื่องของคุณเป็นไฟล์ใหม่ บันทึกไฟล์ JSON ที่ดาวน์โหลดเป็น
credentials.json
ในไดเรกทอรีการทำงาน ไฟล์นี้เป็นสำเนาเดียวของคีย์นี้ ดูข้อมูลเกี่ยวกับวิธีจัดเก็บคีย์อย่างปลอดภัยที่การจัดการคีย์ของบัญชีบริการ - คลิกปิด
ดูข้อมูลเพิ่มเติมเกี่ยวกับบัญชีบริการได้ที่บัญชีบริการในเอกสารประกอบของ IAM ใน Google Cloud
ถัดไป ให้สร้างไคลเอ็นต์ OAuth ที่เข้ากันได้กับ Google Workspace Marketplace สำหรับบัญชีบริการนี้
ได้รับการอนุมัติจากผู้ดูแลระบบ
หากต้องการใช้ขอบเขตการให้สิทธิ์ที่ขึ้นต้นด้วย https://www.googleapis.com/auth/chat.app.*
ซึ่งเป็นส่วนหนึ่งของตัวอย่างสำหรับนักพัฒนาแอป แอป Chat ของคุณต้องได้รับการอนุมัติจากผู้ดูแลระบบแบบครั้งเดียว
หากต้องการใช้ขอบเขตการให้สิทธิ์ https://www.googleapis.com/auth/chat.bot
คุณไม่จำเป็นต้องขออนุมัติจากผู้ดูแลระบบ
คุณต้องเตรียมบัญชีบริการของแอป Chat ด้วยข้อมูลต่อไปนี้เพื่อรับการอนุมัติจากผู้ดูแลระบบ
- ไคลเอ็นต์ OAuth ที่เข้ากันได้กับ Google Workspace Marketplace
- การกําหนดค่าแอปใน SDK ของ Google Workspace Marketplace
สร้างไคลเอ็นต์ OAuth ที่เข้ากันได้กับ Google Workspace Marketplace
หากต้องการสร้างไคลเอ็นต์ OAuth ที่เข้ากันได้กับ Google Workspace Marketplace ให้ทําตามขั้นตอนต่อไปนี้
ในคอนโซล Google Cloud ให้ไปที่เมนู > IAM และผู้ดูแลระบบ > บัญชีบริการ
คลิกบัญชีบริการที่คุณสร้างสำหรับแอปแชท
คลิกการตั้งค่าขั้นสูง
คลิกสร้างไคลเอ็นต์ OAuth ที่เข้ากันได้กับ Google Workspace Marketplace
คลิกต่อไป
ข้อความยืนยันจะปรากฏขึ้นเพื่อแจ้งว่าได้สร้างไคลเอ็นต์ OAuth ที่เข้ากันได้กับ Google Workspace Marketplace แล้ว
กำหนดค่าแอป Chat ใน SDK ของ Google Workspace Marketplace
หากต้องการกำหนดค่าแอป Chat ใน SDK ของ Google Workspace Marketplace ให้ทำตามขั้นตอนต่อไปนี้
เปิดใช้ SDK ของ Google Workspace Marketplace ในคอนโซล Google Cloud
ในคอนโซล 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 สําหรับสคริปต์แอปเพื่อสร้างโทเค็น 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.*
ให้ดูวิธีผู้ดูแลระบบให้สิทธิ์แบบครั้งเดียว