Mengautentikasi serta mengizinkan aplikasi Chat dan permintaan Google Chat API (original) (raw)

Otentikasi dan otorisasi adalah mekanisme yang digunakan untuk memverifikasi identitas dan akses ke sumber daya. Dokumen ini menguraikan cara kerja autentikasi dan otorisasi untuk aplikasi Chat dan permintaan Chat API.

Ringkasan proses

Diagram berikut menunjukkan langkah-langkah tingkat tinggi autentikasi dan otorisasi untuk Google Chat:

Langkah-langkah umum untuk autentikasi dan otorisasi Google Chat

Gambar 1. Langkah-langkah umum untuk autentikasi dan otorisasi Google Chat.

  1. Konfigurasi project Google Cloud, aktifkan Chat API, dan konfigurasi aplikasi Chat Anda: Selama pengembangan, Anda membuat project Google Cloud. Di project Google Cloud, Anda mengaktifkan Chat API, mengonfigurasi aplikasi Chat, dan menyiapkan autentikasi. Untuk mengetahui informasi selengkapnya, lihatMengembangkan di Google WorkspacedanMembangun aplikasi Chat.
  2. Memanggil Chat API: Saat aplikasi Anda memanggil Chat API, aplikasi akan mengirimkan kredensial autentikasi ke Chat API. Jika aplikasi Anda melakukan autentikasi dengan akun layanan, kredensial akan dikirim sebagai bagian dari kode aplikasi Anda. Jika aplikasi Anda memerlukan panggilan Chat API menggunakan autentikasi pengguna yang belum diberikan, pengguna akan diminta untuk login.
  3. Meminta resource: Aplikasi Anda meminta akses dengancakupanyang Anda tentukan saat menyiapkan autentikasi.
  4. Meminta izin: Jika aplikasi Anda melakukan autentikasi sebagai pengguna, Google akan menampilkan layar izin OAuth sehingga pengguna dapat memutuskan apakah akan memberikan akses aplikasi Anda ke data yang diminta. Autentikasi dengan akun layanan tidak memerlukan izin pengguna.
  5. Mengirim permintaan yang disetujui untuk resource: Jika pengguna menyetujui cakupan otorisasi, aplikasi Anda akan menggabungkan kredensial dan cakupan yang disetujui pengguna ke dalam permintaan. Permintaan dikirim ke server otorisasi Google untuk mendapatkan token akses.
  6. Google menampilkan token akses: Token akses berisi daftar cakupan yang diberikan. Jika daftar cakupan yang ditampilkan lebih ketat daripada cakupan yang diminta, aplikasi Anda akan menonaktifkan fitur apa pun yang dibatasi oleh token.
  7. Mengakses resource yang diminta: Aplikasi Anda menggunakan token akses dari Google untuk memanggil Chat API dan mengakses resource Chat API.
  8. Mendapatkan token refresh (opsional): Jika aplikasi Anda harus mengakses Google Chat API di luar masa berlaku satu token akses, aplikasi tersebut dapat mendapatkan token refresh. Untuk mengetahui informasi selengkapnya, lihatMenggunakan OAuth 2.0 untuk mengakses Google API.
  9. Meminta lebih banyak resource: Jika memerlukan lebih banyak akses, aplikasi Anda akan meminta pengguna untuk memberikan cakupan baru, sehingga menghasilkan permintaan baru untuk mendapatkan token akses (langkah 3-6).

Saat aplikasi Chat memerlukan autentikasi

Aplikasi Chat dapat mengirim pesan sebagai respons terhadap interaksi pengguna, atau secara asinkron. Aplikasi ini juga dapat menyelesaikan tugas atas nama pengguna, seperti membuat ruang Chat atau mendapatkan daftar orang di ruang Chat.

Aplikasi Chat tidak memerlukan autentikasi untuk merespons interaksi pengguna, kecuali jika aplikasi Chat memanggil Chat API atau Google API lain saat memproses respons.

Untuk mengirim pesan asinkron atau melakukan tugas atas nama pengguna, aplikasi Chat membuat permintaan RESTful ke Chat API, yang memerlukan autentikasi dan otorisasi.

Respons terhadap interaksi pengguna tidak memerlukan autentikasi

Aplikasi Google Chat tidak perlu melakukan autentikasi sebagai pengguna atau aplikasi Chat untuk menerima dan merespons peristiwa interaksi secara serentak.

Aplikasi Google Chat menerima peristiwa interaksi setiap kali pengguna berinteraksi atau memanggil aplikasi Chat, termasuk yang berikut ini:

Diagram berikut menunjukkan urutan permintaan-respons antara pengguna Chat dan aplikasi Chat:

Tidak diperlukan otorisasi untuk peristiwa interaksi aplikasi Chat

**Gambar 2.**Peristiwa interaksi aplikasi Chat tidak memerlukan autentikasi.

  1. Pengguna mengirim pesan ke aplikasi Chat di Google Chat.
  2. Google Chat akan meneruskan pesan ke aplikasi.
  3. Aplikasi menerima pesan, memprosesnya, dan menampilkan respons ke Google Chat.
  4. Google Chat merender respons untuk pengguna, atau di ruang.

Urutan ini berulang untuk setiap peristiwa interaksi aplikasi Chat.

Pesan asinkron memerlukan autentikasi

Pesan asinkron terjadi saat aplikasi Chat membuat permintaan ke Chat API, yang memerlukan autentikasi dan otorisasi.

Dengan memanggil Chat API, aplikasi Chat dapat memposting pesan ke Google Chat atau menyelesaikan tugas dan mengakses data atas nama pengguna. Misalnya, setelah mendeteksi gangguan server, aplikasi Chat dapat memanggil Chat API untuk:

Diagram berikut menunjukkan urutan pesan asinkron antara aplikasi Chat dan ruang Chat:

Autentikasi diperlukan untuk pesan asinkron

Gambar 3. Pesan asinkron memerlukan autentikasi.

  1. Aplikasi Chat membuat pesan dengan memanggil Chat API menggunakan metode spaces.messages.create, dan menyertakan kredensial pengguna dalam permintaan HTTP.
  2. Google Chat mengautentikasi aplikasi Chat dengan kredensial pengguna atau akun layanan.
  3. Google Chat merender pesan aplikasi ke ruang Chat yang ditentukan.

Cakupan Chat API

Mengonfigurasi layar izin OAuth dan memilih cakupanuntuk menentukan informasi yang ditampilkan kepada pengguna dan peninjau aplikasi, serta mendaftarkan aplikasi Anda agar dapat dipublikasikan nanti.

Untuk menentukan tingkat akses yang diberikan ke aplikasi Anda, Anda perlu mengidentifikasi dan mendeklarasikan cakupan otorisasi. Cakupan otorisasi adalah string URI OAuth 2.0 yang berisi nama aplikasi Google Workspace, jenis data yang diakses, dan tingkat akses.

Cakupan tidak sensitif

Kode cakupan Deskripsi
https://www.googleapis.com/auth/chat.bot Mengizinkan aplikasi Let's Chat melihat percakapan dan mengirim pesan. Cakupan ini hanya mendukung autentikasi aplikasi dengan akun layanan. Anda tidak dapat melakukan autentikasi dengan kredensial pengguna atau dengandelegasi di seluruh domain menggunakan cakupan ini.

Cakupan sensitif

Kode cakupan Deskripsi
https://www.googleapis.com/auth/chat.spaces Membuat percakapan dan ruang serta melihat atau mengedit metadata (termasuk setelan histori dan setelan akses) di Chat.
https://www.googleapis.com/auth/chat.spaces.create Membuat percakapan baru di Chat.
https://www.googleapis.com/auth/chat.spaces.readonly Melihat chat dan ruang di Chat.
https://www.googleapis.com/auth/chat.memberships Melihat, menambahkan, memperbarui, dan menghapus anggota dari percakapan di Chat.
https://www.googleapis.com/auth/chat.memberships.app Menambahkan dan menghapus dirinya sendiri dari percakapan di Google Chat.
https://www.googleapis.com/auth/chat.memberships.readonly Melihat anggota dalam percakapan Chat.
https://www.googleapis.com/auth/chat.messages.create Menulis dan mengirim pesan di Chat.
https://www.googleapis.com/auth/chat.messages.reactions Melihat, menambahkan, dan menghapus reaksi pada pesan di Chat.
https://www.googleapis.com/auth/chat.messages.reactions.create Menambahkan reaksi pada pesan di Chat.
https://www.googleapis.com/auth/chat.messages.reactions.readonly Melihat reaksi pada pesan di Chat.
https://www.googleapis.com/auth/chat.users.readstate Melihat dan mengubah waktu baca terakhir untuk percakapan Chat.
https://www.googleapis.com/auth/chat.users.readstate.readonly Melihat waktu terakhir dibaca untuk percakapan Chat.
https://www.googleapis.com/auth/chat.admin.spaces.readonly Melihat chat dan ruang yang dimiliki oleh domain administrator di Chat.
https://www.googleapis.com/auth/chat.admin.spaces Melihat atau mengedit chat dan ruang yang dimiliki oleh domain administrator di Chat.
https://www.googleapis.com/auth/chat.admin.memberships.readonly Melihat anggota dan pengelola dalam percakapan yang dimiliki oleh domain administrator di Chat.
https://www.googleapis.com/auth/chat.admin.memberships Melihat, menambahkan, memperbarui, dan menghapus anggota serta pengelola dalam percakapan yang dimiliki oleh domain administrator di Chat.
https://www.googleapis.com/auth/chat.app.spaces Membuat percakapan dan ruang serta melihat atau memperbarui metadata (termasuk setelan histori dan setelan akses) di Chat sebagai aplikasi Chat. Memerlukanpersetujuan administrator. Cakupan ini hanya mendukung autentikasi aplikasi dengan akun layanan. Anda tidak dapat melakukan autentikasi dengan kredensial pengguna atau dengandelegasi di seluruh domain menggunakan cakupan ini.
https://www.googleapis.com/auth/chat.app.spaces.create Membuat percakapan dan ruang baru di Chat sebagai aplikasi Chat. Memerlukanpersetujuan administrator. Cakupan ini hanya mendukung autentikasi aplikasi dengan akun layanan. Anda tidak dapat melakukan autentikasi dengan kredensial pengguna atau dengandelegasi di seluruh domain menggunakan cakupan ini.
https://www.googleapis.com/auth/chat.app.memberships Melihat, menambahkan, memperbarui, dan menghapus anggota dari percakapan dan ruang di Chat sebagai aplikasi Chat. Memerlukan persetujuan administrator. Cakupan ini hanya mendukung autentikasi aplikasi dengan akun layanan. Anda tidak dapat melakukan autentikasi dengan kredensial pengguna atau dengandelegasi di seluruh domain menggunakan cakupan ini.
https://www.googleapis.com/auth/chat.customemojis Melihat, membuat, dan menghapus emoji kustom di Chat.
https://www.googleapis.com/auth/chat.customemojis.readonly Melihat emoji kustom di Chat.
https://www.googleapis.com/auth/chat.users.spacesettings Melihat dan memperbarui setelan ruang pengguna Chat.
https://www.googleapis.com/auth/chat.users.sections Melihat, membuat, memperbarui, dan menghapus bagian Anda di Chat; memindahkan dan mencantumkan item bagian Anda di Chat.
https://www.googleapis.com/auth/chat.users.sections.readonly Melihat bagian Anda dan item bagiannya di Chat.

Cakupan yang dibatasi

Kode cakupan Deskripsi
https://www.googleapis.com/auth/chat.delete Menghapus percakapan dan ruang, serta menghapus akses ke file terkait di Chat.
https://www.googleapis.com/auth/chat.import Mengimpor ruang, pesan, dan keanggotaan ke Chat. Untuk informasi selengkapnya, lihatMengizinkan aplikasi Chat mengimpor data
https://www.googleapis.com/auth/chat.messages Melihat, menulis, mengirim, memperbarui, dan menghapus pesan, serta menambahkan, melihat, dan menghapus reaksi pada pesan.
https://www.googleapis.com/auth/chat.messages.readonly Melihat pesan dan reaksi di Chat.
https://www.googleapis.com/auth/chat.app.messages.readonly Melihat pesan dan reaksi di Chat sebagai aplikasi Chat. Memerlukan persetujuan administrator. Cakupan ini hanya mendukung autentikasi aplikasi dengan akun layanan. Anda tidak dapat melakukan autentikasi dengan kredensial pengguna atau dengandelegasi di seluruh domain menggunakan cakupan ini.
https://www.googleapis.com/auth/chat.admin.delete Menghapus percakapan dan ruang yang dimiliki domain administrator, serta menghapus akses ke file terkait di Chat.
https://www.googleapis.com/auth/chat.app.delete Menghapus percakapan dan ruang serta menghapus akses ke file terkait di Chat sebagai aplikasi Chat. Memerlukan persetujuan administrator. Cakupan ini hanya mendukung autentikasi aplikasi dengan akun layanan. Anda tidak dapat melakukan autentikasi dengan kredensial pengguna atau dengandelegasi di seluruh domain menggunakan cakupan ini.

Cakupan dalam tabel sebelumnya menunjukkan sensitivitasnya, menurut definisi berikut:

Jika aplikasi Anda memerlukan akses ke Google API lainnya, Anda juga dapat menambahkan cakupan tersebut. Untuk mengetahui informasi selengkapnya tentang cakupan Google API, lihat Menggunakan OAuth 2.0 untuk Mengakses Google API.

Untuk mempelajari lebih lanjut cakupan untuk Google Workspace API, lihatMengonfigurasi layar izin OAuth dan memilih cakupan.

Jenis autentikasi yang diperlukan

Ada dua cara aplikasi Chat dapat melakukan autentikasi dan otorisasi dengan Chat API:

Autentikasi pengguna

Autentikasi penggunamemungkinkan aplikasi Chat mengakses data pengguna dan menyelesaikan tindakan atas nama pengguna. Cakupan OAuth menentukan data dan tindakan yang diizinkan. Kecuali jika aplikasi Chatdiinstal oleh adminatau diberidelegasi seluruh domain, saat aplikasi Chat melakukan tindakan atas nama pengguna untuk pertama kalinya, pengguna harus mengizinkan aplikasi Chat menggunakan layar izin OAuth.

Autentikasi aplikasi

Autentikasi aplikasi memungkinkan aplikasi Chat menggunakan kredensial akun layanan dan mengakses data serta menyelesaikan tindakan sebagai dirinya sendiri. Karena aplikasi Chat menggunakan kredensialnya sendiri untuk mengakses dan menggunakan resource, pengguna akhir tidak perlu menyetujui panggilan API aplikasi Chat, dan Anda tidak dapat menambahkan cakupan otorisasi OAuth yang mendukung otorisasi aplikasi ke layar izin OAuth.

Dua jenis cakupan otorisasi OAuth mendukung autentikasi aplikasi:

Jika metode mendukung autentikasi pengguna atau aplikasi, Chat API akan menampilkan hasil yang berbeda berdasarkan jenis autentikasi yang Anda gunakan:

Misalnya, memanggil metode spaces.list() dengan otorisasi aplikasi akan menampilkan daftar ruang tempat aplikasi Chat menjadi anggotanya. Memanggil spaces.list() dengan otorisasi pengguna akan menampilkan daftar ruang tempat pengguna menjadi anggota. Dalam praktiknya, Anda dapat menggunakan kedua jenis autentikasi saat memanggil Chat API, bergantung pada desain dan fitur aplikasi Chat Anda.

Untuk panggilan Chat API asinkron

Tabel berikut mencantumkan metode Chat API dan cakupan otorisasi yang didukung:

Metode Autentikasi pengguna didukung Autentikasi aplikasi didukung Cakupan otorisasi yang didukung
Ruang
Membuat ruang Dengan Autentikasi pengguna: chat.spaces.create chat.spaces chat.import Dengan Autentikasi aplikasi dan persetujuan administrator: chat.app.spaces.create chat.app.spaces
Menyiapkan ruang Dengan Autentikasi pengguna: chat.spaces.create chat.spaces
Mendapatkan ruang Dengan Autentikasi pengguna: chat.spaces.readonly chat.spaces Dengan Autentikasi pengguna menggunakan hak istimewa administrator: chat.admin.spaces.readonly Dengan Autentikasi aplikasi: chat.bot Dengan Autentikasi aplikasi dan persetujuan administrator: chat.app.spaces
Mencantumkan ruang Dengan Autentikasi pengguna: chat.spaces.readonly chat.spaces Dengan Autentikasi aplikasi: chat.bot
Telusuri ruang Dengan Autentikasi pengguna menggunakan hak istimewa administrator: chat.admin.spaces.readonly
Memperbarui ruang Dengan Autentikasi pengguna: chat.spaces chat.import Dengan Autentikasi pengguna menggunakan hak istimewa administrator: chat.admin.spaces Dengan Autentikasi aplikasi dan persetujuan administrator: chat.app.spaces
Menghapus ruang Dengan Autentikasi pengguna: chat.delete chat.import Dengan Autentikasi pengguna menggunakan hak istimewa administrator: chat.admin.delete Dengan Autentikasi aplikasi dan persetujuan administrator: chat.app.delete
Menyelesaikan proses impor untuk ruang Dengan Autentikasi pengguna: chat.import
Menemukan pesan langsung Dengan Autentikasi pengguna: chat.spaces.readonly chat.spaces Dengan Autentikasi aplikasi: chat.bot
Anggota
Membuat anggota Dengan Autentikasi pengguna: chat.memberships chat.memberships.app chat.import Dengan Autentikasi pengguna menggunakan hak istimewa administrator: chat.admin.memberships Dengan Autentikasi aplikasi dan persetujuan administrator: chat.app.memberships
Mendapatkan anggota Dengan Autentikasi pengguna: chat.memberships.readonly chat.memberships Dengan Autentikasi aplikasi: chat.bot Dengan Autentikasi pengguna menggunakan hak istimewa administrator: chat.admin.memberships.readonly
Mencantumkan anggota Dengan Autentikasi pengguna: chat.memberships.readonly chat.memberships chat.import Dengan Autentikasi aplikasi: chat.bot Dengan Autentikasi pengguna menggunakan hak istimewa administrator: chat.admin.memberships.readonly
Menghapus anggota Dengan Autentikasi pengguna: chat.memberships chat.memberships.app chat.import Dengan Autentikasi pengguna menggunakan hak istimewa administrator: chat.admin.memberships Dengan Autentikasi aplikasi dan persetujuan administrator: chat.app.memberships
Memperbarui anggota Dengan Autentikasi pengguna: chat.memberships chat.import Dengan Autentikasi pengguna menggunakan hak istimewa administrator: chat.admin.memberships Dengan Autentikasi aplikasi dan persetujuan administrator: chat.app.memberships
Pesan
Membuat pesan Dengan Autentikasi pengguna: chat.messages.create chat.messages chat.import Dengan Autentikasi aplikasi: chat.bot
Mendapatkan pesan Dengan Autentikasi pengguna: chat.messages.readonly chat.messages Dengan Autentikasi aplikasi: chat.bot Dengan Autentikasi aplikasi dan persetujuan administrator (tersedia di Pratinjau Developer): chat.app.messages.readonly
Mencantumkan pesan Dengan Autentikasi pengguna: chat.messages.readonly chat.messages chat.import Dengan Autentikasi aplikasi dan persetujuan administrator (tersedia di Pratinjau Developer): chat.app.messages.readonly
Memperbarui pesan Dengan Autentikasi pengguna: chat.messages chat.import Dengan Autentikasi aplikasi: chat.bot
Menghapus pesan Dengan Autentikasi pengguna: chat.messages chat.import Dengan Autentikasi aplikasi: chat.bot
Reaksi
Membuat reaksi Dengan Autentikasi pengguna: chat.messages.reactions.create chat.messages.reactions chat.messages chat.import
Mencantumkan reaksi Dengan Autentikasi pengguna: chat.messages.reactions.readonly chat.messages.reactions chat.messages.readonly chat.messages
Menghapus reaksi Dengan Autentikasi pengguna: chat.messages.reactions chat.messages chat.import
Emoji kustom
Membuat emoji kustom Dengan Autentikasi pengguna: chat.customemojis
Menghapus emoji kustom Dengan Autentikasi pengguna: chat.customemojis
Mendapatkan emoji kustom Dengan Autentikasi pengguna: chat.customemojis chat.customemojis.readonly
Mencantumkan emoji kustom Dengan Autentikasi pengguna: chat.customemojis chat.customemojis.readonly
Media & lampiran
Mengupload media sebagai lampiran file Dengan Autentikasi pengguna: chat.messages.create chat.messages chat.import
Mendownload media Dengan Autentikasi pengguna: chat.messages.readonly chat.messages Dengan Autentikasi aplikasi: chat.bot
Mendapatkan lampiran pesan Dengan Autentikasi aplikasi: chat.bot
Status sudah dibaca pengguna
Mendapatkan status sudah dibaca ruang pengguna Dengan Autentikasi pengguna: chat.users.readstate chat.users.readstate.readonly
Memperbarui status sudah dibaca ruang pengguna Dengan Autentikasi pengguna: chat.users.readstate
Mendapatkan status sudah dibaca atau belum dari rangkaian pesan pengguna Dengan Autentikasi pengguna: chat.users.readstate chat.users.readstate.readonly
Setelan ruang pengguna
Mendapatkan setelan notifikasi ruang pengguna Dengan Autentikasi pengguna: chat.users.spacesettings
Memperbarui setelan notifikasi ruang pengguna Dengan Autentikasi pengguna: chat.users.spacesettings
Peristiwa ruang
Mendapatkan peristiwa ruang Dengan Autentikasi pengguna, Anda harus menggunakan cakupan berdasarkan jenis peristiwa: Untuk peristiwa tentang pesan: chat.messages chat.messages.readonly Untuk peristiwa tentang reaksi: chat.messages.reactions chat.messages.reactions.readonly chat.messages chat.messages.readonly Untuk acara tentang langganan: chat.memberships chat.memberships.readonly Untuk acara tentang ruang: chat.spaces chat.spaces.readonly
Mencantumkan peristiwa ruang Dengan Autentikasi pengguna, Anda harus menggunakan cakupan untuk setiap jenis peristiwa yang disertakan dalam permintaan: Untuk peristiwa tentang pesan: chat.messages chat.messages.readonly Untuk peristiwa tentang reaksi: chat.messages.reactions chat.messages.reactions.readonly chat.messages chat.messages.readonly Untuk acara tentang langganan: chat.memberships chat.memberships.readonly Untuk acara tentang ruang: chat.spaces chat.spaces.readonly
Bagian
Membuat bagian Dengan Autentikasi pengguna: chat.users.sections
Menghapus bagian Dengan Autentikasi pengguna: chat.users.sections
Bagian daftar Dengan Autentikasi pengguna: chat.users.sections chat.users.sections.readonly
Memperbarui bagian Dengan Autentikasi pengguna: chat.users.sections
Memosisikan bagian Dengan Autentikasi pengguna: chat.users.sections
Item Bagian
Memindahkan item bagian Dengan Autentikasi pengguna: chat.users.sections
Item bagian daftar Dengan Autentikasi pengguna: chat.users.sections chat.users.sections.readonly

Untuk peristiwa interaksi aplikasi Chat

Tabel berikut mencantumkan cara umum pengguna berinteraksi dengan Aplikasi Chat dan apakah autentikasi diperlukan atau didukung:

Skenario Tidak diperlukan autentikasi Autentikasi pengguna didukung Autentikasi aplikasi didukung
Menerima pesan dari: Peristiwa interaksi aplikasi Chat — — Callback Apps Script — — Google Cloud Pub/Sub — —
Merespons pesan: Secara serentak, menggunakan peristiwa interaksi aplikasi Chat — — Secara sinkron, menggunakan nilai yang ditampilkan callback Apps Script — —
Mengirim pesan baru: Dengan webhook masuk — —