Melakukan autentikasi sebagai aplikasi Chat

Panduan ini menjelaskan cara menyiapkan dan menggunakan akun layanan untuk mengakses REST API Google Chat atas nama aplikasi Chat. Pertama, panduan ini akan memandu Anda mempelajari cara membuat akun layanan. Kemudian, bagian ini menunjukkan cara menulis skrip yang menggunakan akun layanan untuk mengautentikasi dengan Chat API dan memposting pesan di ruang Chat.

Aplikasi Chat dapat menggunakan akun layanan untuk melakukan autentikasi saat memanggil REST API Google Chat secara asinkron sehingga aplikasi tersebut dapat:

  • Kirim pesan ke Google Chat dengan spaces.messages.create ke:
    • Memberi tahu pengguna saat tugas latar belakang yang berjalan lama selesai dijalankan.
    • Beri tahu pengguna bahwa server telah offline.
    • Minta staf dukungan pelanggan untuk menangani kasus pelanggan yang baru dibuka.
  • Perbarui pesan yang dikirim sebelumnya dengan spaces.messages.update ke:
    • Ubah status operasi yang sedang berlangsung.
    • Memperbarui penerima tugas atau batas waktu.
  • Cantumkan pengguna di ruang dengan spaces.members.list untuk:
    • Melihat siapa saja yang ada di ruang.
    • Verifikasi keanggotaan ruang mencakup semua orang dalam tim.

Saat diautentikasi dengan akun layanan, untuk mendapatkan data tentang atau melakukan tindakan di ruang Chat, aplikasi Chat harus memiliki keanggotaan di ruang. Misalnya, untuk mencantumkan anggota ruang, atau membuat pesan di ruang, aplikasi Chat harus menjadi anggota ruang itu sendiri.

Jika aplikasi Chat Anda perlu mengakses data pengguna atau melakukan tindakan atas nama pengguna, lakukan autentikasi sebagai pengguna.

Jika Anda merupakan administrator domain, Anda dapat memberikan delegasi otoritas seluruh domain untuk mengizinkan akun layanan aplikasi mengakses data pengguna Anda tanpa mengharuskan setiap pengguna untuk memberikan izin. Setelah mengonfigurasi delegasi di seluruh domain, Anda dapat melakukan panggilan API menggunakan akun layanan untuk meniru identitas akun pengguna. Meskipun akun layanan digunakan untuk autentikasi, delegasi seluruh domain akan meniru identitas pengguna dan dianggap sebagai autentikasi pengguna. Setiap fungsi yang memerlukan autentikasi pengguna, Anda dapat menggunakan delegasi di seluruh domain.

Untuk mempelajari lebih lanjut kapan aplikasi Chat memerlukan autentikasi dan jenis autentikasi yang akan digunakan, lihat Jenis autentikasi yang diperlukan di ringkasan autentikasi dan otorisasi Chat API.

Prasyarat

Untuk menjalankan contoh dalam panduan ini, Anda memerlukan prasyarat berikut:

Python

Langkah 1: Buat akun layanan di Google Cloud Console

Buat akun layanan yang akan digunakan aplikasi Chat Anda untuk mengakses Google API.

Membuat akun layanan:

Untuk membuat akun layanan, ikuti langkah-langkah berikut:

  1. Di Google Cloud Console, buka Menu > IAM & Admin > Akun Layanan.

    Buka Akun Layanan

  2. Klik Create service account.
  3. Isi detail akun layanan, lalu klik Buat dan lanjutkan.
  4. Opsional: Tetapkan peran ke akun layanan Anda untuk memberikan akses ke resource project Google Cloud. Untuk mengetahui detail selengkapnya, lihat Memberikan, mengubah, dan mencabut akses ke resource.
  5. Klik Continue.
  6. Opsional: Masukkan pengguna atau grup yang dapat mengelola dan melakukan tindakan dengan akun layanan ini. Untuk detail selengkapnya, lihat Mengelola peniruan identitas akun layanan.
  7. Klik Selesai. Catat alamat email untuk akun layanan.

Akun layanan akan muncul di halaman akun layanan. Berikutnya, buat kunci pribadi untuk akun layanan.

Buat kunci pribadi

Untuk membuat kunci pribadi bagi akun layanan, ikuti langkah-langkah ini:

  1. Di Google Cloud Console, buka Menu > IAM & Admin > Akun Layanan.

    Buka Akun Layanan

  2. Pilih akun layanan Anda.
  3. Klik Keys > Add key > Create new key.
  4. Pilih JSON, lalu klik Buat.

    Pasangan kunci umum/pribadi baru Anda akan dibuat dan didownload ke mesin Anda sebagai file baru. File ini adalah satu-satunya salinan kunci ini. Untuk informasi tentang cara menyimpan kunci Anda dengan aman, lihat Mengelola kunci akun layanan.

  5. Klik Tutup.

Untuk informasi selengkapnya tentang akun layanan, lihat akun layanan di dokumentasi IAM Google Cloud.

Langkah 2: Tulis skrip yang menggunakan akun layanan untuk mengautentikasi dengan Chat REST API

Kode berikut melakukan autentikasi dengan Chat REST API menggunakan akun layanan, lalu memposting pesan ke ruang Chat:

Python

  1. Di direktori kerja, buat file dengan nama chat_app_auth.py.
  2. Sertakan kode berikut di chat_app_auth.py:

    from httplib2 import Http
    from oauth2client.service_account import ServiceAccountCredentials
    from apiclient.discovery import build
    
    # Specify required scopes.
    SCOPES = ['https://www.googleapis.com/auth/chat.bot']
    
    # Specify service account details.
    CREDENTIALS = ServiceAccountCredentials.from_json_keyfile_name(
        'service_account.json', SCOPES)
    
    # Build the URI and authenticate with the service account.
    chat = build('chat', 'v1', http=CREDENTIALS.authorize(Http()))
    
    # 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()
    
    print(result)
    
  3. Dalam kode, ganti SPACE_NAME dengan nama ruang, yang dapat Anda peroleh dari metode spaces.list di Chat API, atau dari URL ruang.

Langkah 3: Jalankan contoh lengkap

Di direktori kerja, buat dan jalankan contoh:

Python

python3 chat_app_auth.py

Skrip Anda membuat permintaan yang diautentikasi ke Chat REST API, yang merespons dengan memposting pesan di ruang Chat sebagai aplikasi Chat.

Memecahkan masalah contoh

Bagian ini menjelaskan masalah umum yang mungkin Anda alami saat mencoba menjalankan contoh ini.

Anda tidak diizinkan menggunakan aplikasi ini

Saat menjalankan chat_app_auth.py, Anda mungkin menerima error yang menyatakan:

<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">

Pesan error ini berarti aplikasi Chat tidak memiliki izin untuk memposting pesan Chat di ruang Chat tempat aplikasi tersebut mencoba memposting.

Untuk mengatasi error, tambahkan aplikasi Chat ke ruang Chat yang ditentukan di chat_app_auth.py.

Langkah berikutnya

Pelajari hal lain yang dapat dilakukan Chat API dengan meninjau dokumentasi referensi Chat API.