Mengautentikasi dan memberi otorisasi kepada pengguna

Panduan ini menjelaskan cara menggunakan OAuth 2.0 dengan kredensial Google pengguna untuk mengakses Chat API. Mengautentikasi dan memberi otorisasi dengan kredensial pengguna memungkinkan aplikasi Chat mengakses data pengguna dan melakukan operasi atas nama pengguna yang diautentikasi. Dengan mengautentikasi atas nama pengguna, aplikasi memiliki izin yang sama seperti pengguna tersebut dan dapat melakukan tindakan seolah-olah dilakukan oleh pengguna tersebut. Namun, aplikasi Chat ini tidak dapat dipublikasikan secara publik. Untuk informasi selengkapnya, lihat Memublikasikan aplikasi Google Chat.

Setelah mengautentikasi dan memberi otorisasi panggilan API dengan kredensial pengguna, aplikasi Chat dapat melakukan hal berikut:

  • Membuat ruang Chat.
  • Menambahkan pengguna ke ruang Chat dan percakapan grup.
  • Gunakan data pengguna di Workspace API lainnya seperti berikut:

Saat aplikasi melakukan tindakan dengan autentikasi pengguna (seperti membuat ruang), Google Chat akan menampilkan pesan atribusi yang memberi tahu pengguna nama aplikasi yang melakukan tindakan untuk pengguna yang mengizinkannya.

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.

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, akun layanan dapat 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 menggunakan Google Chat API guna mengakses atau mengubah resource organisasi Google Workspace, pengguna harus menjadi anggota organisasi tersebut. Pengguna eksternal atau pengguna yang tidak memiliki akun Google Workspace dengan akses ke Google Chat tidak didukung.

Prasyarat

Python

Langkah 1: Instal library klien Google

Jika Anda belum menginstal library klien Google untuk bahasa yang dipilih, jalankan perintah berikut di antarmuka command line:

Python

pip3 install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib oauth2client

Anda dapat menggunakan bahasa apa pun yang didukung oleh library klien kami.

Langkah 2: Konfigurasikan layar izin OAuth, tentukan cakupan, dan daftarkan aplikasi Anda

Saat Anda menggunakan OAuth 2.0 untuk otorisasi, Google akan menampilkan layar izin kepada pengguna, termasuk ringkasan project Anda, kebijakannya, dan cakupan otorisasi yang diminta. Mengonfigurasi layar izin OAuth aplikasi Anda akan menentukan apa yang ditampilkan Google kepada pengguna dan peninjau aplikasi, serta mendaftarkan aplikasi sehingga Anda dapat memublikasikannya nanti.

Semua aplikasi yang menggunakan OAuth 2.0 memerlukan konfigurasi layar izin, tetapi Anda hanya perlu mencantumkan cakupan untuk aplikasi yang digunakan oleh orang di luar organisasi Google Workspace Anda.

  1. Di Google Cloud Console, buka Menu > API & Layanan > Layar izin OAuth.

    Buka layar izin OAuth

  2. Pilih jenis pengguna untuk aplikasi Anda, lalu klik Create.

  3. Isi formulir pendaftaran aplikasi, lalu klik Simpan dan Lanjutkan.

  4. Klik Add or Remove Scopes. Tambahkan dan verifikasi cakupan otorisasi yang diperlukan aplikasi Anda, klik Perbarui, lalu klik Simpan dan Lanjutkan.

  5. Tinjau ringkasan pendaftaran aplikasi Anda. Klik Edit untuk membuat perubahan, atau klik Kembali ke Dasbor.

Langkah 3: Buat kredensial client ID OAuth di Google Cloud Console

Untuk mengautentikasi sebagai pengguna akhir dan mengakses data pengguna di aplikasi, Anda harus membuat satu atau beberapa Client ID OAuth 2.0. Client ID digunakan untuk mengidentifikasi satu aplikasi ke server OAuth Google. Jika aplikasi Anda berjalan di beberapa platform—seperti Android, iOS, dan Web—Anda harus membuat client ID terpisah untuk setiap platform.

Membuat kredensial client ID OAuth

Pilih jenis aplikasi untuk petunjuk spesifik tentang cara membuat client ID OAuth:

Aplikasi web

  1. Di Google Cloud Console, buka Menu > API & Layanan > Kredensial.

    Buka Credentials

  2. Klik Buat Kredensial > Client ID OAuth.
  3. Klik Jenis aplikasi > Aplikasi web.
  4. Di kolom Name, ketik nama untuk kredensial tersebut. Nama ini hanya ditampilkan di Google Cloud Console.
  5. Tambahkan URI resmi yang terkait dengan aplikasi Anda:
    • Aplikasi sisi klien (JavaScript)–Di bagian Asal JavaScript resmi, klik Tambahkan URI. Kemudian, masukkan URI yang akan digunakan untuk permintaan browser. Ini mengidentifikasi domain tempat aplikasi Anda dapat mengirim permintaan API ke server OAuth 2.0.
    • Aplikasi sisi server (Java, Python, dan lainnya)–Di bagian URI pengalihan yang sah, klik Tambahkan URI. Kemudian, masukkan URI endpoint yang dapat digunakan oleh server OAuth 2.0 untuk mengirim respons.
  6. Klik Create. Layar klien OAuth yang dibuat akan muncul, yang menunjukkan Client ID dan Rahasia klien baru Anda.

    Catat Client ID. Rahasia klien tidak digunakan untuk aplikasi Web.

  7. Klik OK. Kredensial yang baru dibuat muncul di Client ID OAuth 2.0.

Android

  1. Di Google Cloud Console, buka Menu > API & Layanan > Kredensial.

    Buka Credentials

  2. Klik Buat Kredensial > Client ID OAuth.
  3. Klik Jenis aplikasi > Android.
  4. Di kolom "Nama", ketik nama untuk kredensial. Nama ini hanya ditampilkan di Google Cloud Console.
  5. Di kolom "Package name", masukkan nama paket dari file AndroidManifest.xml Anda.
  6. Di kolom "Sidik jari sertifikat SHA-1", masukkan sidik jari sertifikat SHA-1 yang dihasilkan.
  7. Klik Create. Layar klien OAuth yang dibuat akan muncul, yang menunjukkan Client ID baru Anda.
  8. Klik OK. Kredensial yang baru dibuat muncul di bagian "Client ID OAuth 2.0".

iOS

  1. Di Google Cloud Console, buka Menu > API & Layanan > Kredensial.

    Buka Credentials

  2. Klik Buat Kredensial > Client ID OAuth.
  3. Klik Jenis aplikasi > iOS.
  4. Di kolom "Nama", ketik nama untuk kredensial. Nama ini hanya ditampilkan di Google Cloud Console.
  5. Di kolom "ID paket", masukkan ID paket seperti yang tercantum dalam file Info.plist aplikasi.
  6. Opsional: Jika aplikasi Anda muncul di Apple App Store, masukkan ID App Store.
  7. Opsional: Di kolom "ID Tim", masukkan string 10 karakter unik, yang dibuat oleh Apple dan ditugaskan ke tim Anda.
  8. Klik Create. Layar klien OAuth yang dibuat akan muncul, yang menunjukkan Client ID dan Rahasia klien baru Anda.
  9. Klik OK. Kredensial yang baru dibuat muncul di bagian "Client ID OAuth 2.0".

Aplikasi Chrome

  1. Di Google Cloud Console, buka Menu > API & Layanan > Kredensial.

    Buka Credentials

  2. Klik Buat Kredensial > Client ID OAuth.
  3. Klik Jenis aplikasi > Aplikasi Chrome.
  4. Di kolom "Nama", ketik nama untuk kredensial. Nama ini hanya ditampilkan di Google Cloud Console.
  5. Di kolom "ID Aplikasi", masukkan string ID 32 karakter unik aplikasi Anda. Anda dapat menemukan nilai ID ini di URL Chrome Web Store aplikasi dan di Dasbor Developer Chrome Web Store.
  6. Klik Create. Layar klien OAuth yang dibuat akan muncul, yang menunjukkan Client ID dan Rahasia klien baru Anda.
  7. Klik OK. Kredensial yang baru dibuat muncul di bagian "Client ID OAuth 2.0".

Aplikasi desktop

  1. Di Google Cloud Console, buka Menu > API & Layanan > Kredensial.

    Buka Credentials

  2. Klik Buat Kredensial > Client ID OAuth.
  3. Klik Jenis aplikasi > Aplikasi desktop.
  4. Di kolom Name, ketik nama untuk kredensial tersebut. Nama ini hanya ditampilkan di Google Cloud Console.
  5. Klik Create. Layar klien OAuth yang dibuat akan muncul, yang menunjukkan Client ID dan Rahasia klien baru Anda.
  6. Klik OK. Kredensial yang baru dibuat muncul di ID Klien OAuth 2.0.

TV & Perangkat Input Terbatas

  1. Di Google Cloud Console, buka Menu > API & Layanan > Kredensial.

    Buka Credentials

  2. Klik Buat Kredensial > Client ID OAuth.
  3. Klik Jenis aplikasi > TV & Perangkat Input Terbatas.
  4. Di kolom "Nama", ketik nama untuk kredensial. Nama ini hanya ditampilkan di Google Cloud Console.
  5. Klik Create. Layar klien OAuth yang dibuat akan muncul, yang menunjukkan Client ID dan Rahasia klien baru Anda.
  6. Klik OK. Kredensial yang baru dibuat muncul di bagian "Client ID OAuth 2.0".

Universal Windows Platform (UWP)

  1. Di Google Cloud Console, buka Menu > API & Layanan > Kredensial.

    Buka Credentials

  2. Klik Buat Kredensial > Client ID OAuth.
  3. Klik Jenis aplikasi > Platform Windows Universal (UWP).
  4. Di kolom "Nama", ketik nama untuk kredensial. Nama ini hanya ditampilkan di Google Cloud Console.
  5. Di kolom "ID Toko", masukkan nilai unik Microsoft Store ID untuk 12 karakter untuk aplikasi Anda. Anda dapat menemukan ID ini di URL Microsoft Store aplikasi dan di Pusat Partner.
  6. Klik Create. Layar klien OAuth yang dibuat akan muncul, yang menunjukkan Client ID dan Rahasia klien baru Anda.
  7. Klik OK. Kredensial yang baru dibuat muncul di bagian "Client ID OAuth 2.0".

Download file JSON rahasia klien

File rahasia klien adalah representasi JSON dari kredensial client ID OAuth yang dapat direferensikan oleh aplikasi Chat Anda saat memberikan kredensial.

  1. Di Google Cloud Console, buka Menu > API & Layanan > Kredensial.

    Buka Credentials

  2. Di bagian Client ID OAuth 2.0, klik client ID yang Anda buat.

  3. Klik Download JSON.

  4. Simpan file sebagai client_secrets.json.

Langkah 4: Tulis skrip yang memanggil Chat API

Kode berikut menggunakan library klien untuk memanggil Chat API. Cloud Authentication mengautentikasi dengan Chat API menggunakan kredensial client ID OAuth, lalu membuat ruang.

Simpan kode berikut dalam file bernama chat_space_create_named.py di direktori yang sama yang menyimpan client_secrets.json:

Python

from __future__ import print_function

import os.path

from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError

# Define your app's authorization scopes.
# When modifying these scopes, delete the file token.json, if it exists.
SCOPES = ["https://www.googleapis.com/auth/chat.spaces.create"]

def main():
    '''
    Authenticates with Chat API via user credentials,
    then creates a Chat space.
    '''

    flow = InstalledAppFlow.from_client_secrets_file(
                      'client_secrets.json', SCOPES)
    creds = flow.run_local_server()

    # Build a service endpoint for Chat API.
    service = build('chat', 'v1', credentials=creds)

    # Use the service endpoint to call Chat API.
    result = service.spaces().create(

      # Details about the space to create.
      body = {

        # To create a named space, set spaceType to SPACE.
        'spaceType': 'SPACE',

        # The user-visible name of the space.
        'displayName': 'API-made'
      }

      ).execute()

    # Prints details about the created membership.
    print(result)

if __name__ == '__main__':
    main()

Langkah 5: Jalankan skrip contoh

Untuk menjalankan contoh, dari command line, buka direktori yang menyimpan chat_space_create_named.py dan client_secrets.json, lalu jalankan perintah berikut:

Python

python3 chat_space_create_named.py

Browser akan terbuka dan meminta Anda untuk login ke Akun Google Anda:

Login untuk mengizinkan aplikasi Chat.

Gambar 1. Layar izin OAuth tempat Anda memilih akun yang akan mengautentikasi aplikasi.

Setelah Anda login, layar izin OAuth akan muncul dan meminta Anda untuk memberikan izin ke aplikasi.

Setelah Anda memberikan izin, skrip akan memanggil Chat API, yang merespons dengan menambahkan aplikasi Chat ke ruang Chat. Konsol akan mencetak detail panggilan API.

Memecahkan masalah contoh

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

Expected a JSON object with a single property for a "web" or "installed" application

Pesan error ini berarti bahwa file client_secrets.json yang Anda download dari Google Cloud Console tidak dimulai dengan properti "web" atau "installed". Setelah mengautentikasi dengan file yang didownload, jika kode Anda tidak menyimpan token akses di file baru seperti token.json, token akses akan ditulis ke client_secrets.json, yang dapat menyebabkan error ini selama upaya otorisasi berikutnya.

Untuk mengatasi error, download lagi file rahasia klien dari Google Cloud Console, dan simpan file baru ini di tempat file saat ini.

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