คู่มือนี้จะอธิบายวิธีตั้งค่าและใช้บัญชีบริการเพื่อเข้าถึง 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 createSERVICE_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 และทรัพยากร Dependency อื่นๆ ที่จำเป็นลงในโปรเจ็กต์ Maven ให้แก้ไขไฟล์ pom.xml ในไดเรกทอรีของโปรเจ็กต์ แล้วเพิ่มทรัพยากร Dependency ต่อไปนี้
<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-authNode.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 ให้รวมทรัพยากร Dependency ไว้ในแพ็กเกจโปรเจ็กต์และ เรียกใช้คลาสหลักของแอปพลิเคชัน ให้แก้ไขไฟล์ - 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:singlejava -jar target/auth-sample-app-1.0-SNAPSHOT-jar-with-dependencies.jar
Python
python3 chat_app_auth.pyNode.js
node chat_app_auth.jsApps 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.*โปรดดูวิธีที่ ผู้ดูแลระบบให้การอนุมัติแบบครั้งเดียว