คู่มือนี้จะอธิบายวิธีตั้งค่าและใช้บัญชีบริการเพื่อเข้าถึง 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 > การกำหนดค่าแอป
กรอกข้อมูลในหน้าการกําหนดค่าแอปให้เสร็จสมบูรณ์ วิธีกำหนดค่าแอป Chat จะขึ้นอยู่กับกลุ่มเป้าหมายของคุณและปัจจัยอื่นๆ หากต้องการความช่วยเหลือในการกรอกข้อมูลในหน้าการกําหนดค่าแอป ให้ดูหัวข้อกําหนดค่าแอปใน 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.*
โปรดดูวิธีผู้ดูแลระบบอนุมัติแบบครั้งเดียว