Error Otorisasi

Selama proses otorisasi, Google OAuth mungkin menampilkan error. Gunakan panduan ini untuk memecahkan masalah error yang paling umum selama proses ini.

Pemecahan masalah

Untuk mempelajari Google OAuth lebih lanjut, lihat Menggunakan OAuth 2.0 untuk Mengakses Google API.

Masa berlaku token refresh akan terus berakhir

Token refresh dapat berhenti berfungsi setelah 7 hari jika client ID tidak disetujui adalah salah satu kemungkinan penyebabnya. Akhir masa berlaku token 7 hari tidak terkait dengan persetujuan Komersial atau Sandbox. Akun layanan atau pengguna harus mendapatkan persetujuan client ID OAuth 2.0 dan mulai diproduksi untuk mendapatkan masa pakai token yang lebih lama. Lihat Akhir masa berlaku token refresh untuk mengetahui informasi selengkapnya.

Akses ditolak

Jika Anda menyiapkan Layar izin OAuth di Google Cloud dan Jenis pengguna adalah Eksternal, Anda akan mendapatkan error "Akses ditolak" jika mencoba menautkan akun dengan Akun Google yang tidak tercantum sebagai pengguna uji coba untuk aplikasi Anda. Pastikan untuk menambahkan Akun Google ke bagian Pengguna uji di Layar izin OAuth.

Error Partner Connections Manager (PCM)

Untuk mendapatkan bantuan terkait error yang terjadi saat mengakses PCM, lihat Referensi Error Partner Connections Manager (PCM).

Google belum memverifikasi aplikasi ini

SDM API menggunakan cakupan yang dibatasi, yang berarti bahwa setiap aplikasi yang menggunakan cakupan ini selama otorisasi akan "belum diverifikasi" kecuali Verifikasi OAuth API diselesaikan. Saat menggunakan Device Access untuk penggunaan pribadi, Verifikasi OAuth API tidak diperlukan.

Anda mungkin melihat layar "Google belum memverifikasi aplikasi ini" selama proses otorisasi, yang muncul jika cakupan sdm.service tidak dikonfigurasi pada layar izin OAuth Anda di Google Cloud. Layar ini dapat diabaikan dengan mengklik opsi Advanced, lalu mengklik Go to Project Name (unsafe).

Lihat Layar aplikasi yang belum diverifikasi untuk informasi selengkapnya.

Klien tidak valid

Ketika mencoba mendapatkan token akses atau refresh, Anda akan mendapatkan error "Klien tidak valid" jika memberikan Rahasia Klien OAuth 2.0 yang salah. Pastikan nilai client_secret yang Anda gunakan dalam panggilan token akses dan refresh adalah nilai untuk Client ID OAuth 2.0 yang digunakan, seperti yang ada di halaman Kredensial Google Cloud.

Permintaan tidak valid, cakupan yang diperlukan tidak ada

Setelah memberikan izin dalam PCM, Anda mungkin mengalami error "Permintaan tidak valid" pada "Tidak ada parameter required: scope". Pastikan nilai scope yang Anda gunakan dalam panggilan otorisasi sama dengan nilai yang Anda tetapkan untuk Klien OAuth 2.0, seperti yang ada di halaman Kredensial Google Cloud.

URI pengalihan tidak cocok

Saat melakukan otorisasi, Anda mungkin mengalami error "Ketidakcocokan URI pengalihan". Pastikan nilai redirect_uri yang Anda gunakan dalam panggilan otorisasi sama dengan nilai yang Anda tetapkan untuk Klien OAuth 2.0, seperti yang ditemukan di halaman Kredensial Google Cloud.

Referensi cepat

Gunakan referensi ini untuk menerapkan langkah-langkah guna mengizinkan user dan menautkan Akun Google miliknya dengan cepat.

Untuk menggunakan referensi cepat ini, edit setiap variabel placeholder dalam contoh kode dengan nilai untuk integrasi spesifik Anda, lalu salin dan tempel sesuai kebutuhan:

1 PCM

Arahkan user ke link PCM di aplikasi Anda, dengan mengganti:

  1. project-id dengan ID Device Access Project Anda
  2. oauth2-client-id dengan Client ID OAuth2 dari Kredensial Google Cloud Anda.
  3. redirect-uri dengan URI Pengalihan yang ditentukan untuk Client ID OAuth2 yang Anda gunakan
  4. scope dengan salah satu cakupan yang tersedia
https://nestservices.google.com/partnerconnections/project-id/auth?redirect_uri=redirect-uri&access_type=offline&prompt=consent&client_id=oauth2-client-id&response_type=code&scope=https://www.googleapis.com/auth/scope

2 Kode Autentikasi

Setelah memberikan izin melalui PCM untuk cakupan yang dipilih, user akan dialihkan ke URI Pengalihan yang Anda tentukan. Kode Otorisasi ditampilkan sebagai parameter code di URL, yang harus dalam format berikut:

redirect-uri?code=authorization-code&scope=https://www.googleapis.com/auth/scope

3 Token Akses

Gunakan kode otorisasi untuk mengambil token akses, yang dapat Anda gunakan untuk memanggil SDM API atas nama pengguna.

Lakukan panggilan POST ke endpoint OAuth Google, yang menggantikan:

  1. oauth2-client-id dan oauth2-client-secret dengan Client ID dan Rahasia Klien OAuth2 dari Kredensial Google Cloud
  2. authorization-code dengan kode yang Anda terima pada langkah sebelumnya
  3. redirect-uri dengan URI Pengalihan yang ditentukan untuk Client ID OAuth2 yang Anda gunakan

Google OAuth menampilkan dua token, yaitu token akses dan token refresh.

Permintaan

curl -L -X POST 'https://www.googleapis.com/oauth2/v4/token?client_id=oauth2-client-id&client_secret=oauth2-client-secret&code=authorization-code&grant_type=authorization_code&redirect_uri=redirect-uri'

Respons

{
  "access_token": "access-token",
  "expires_in": 3599,
  "refresh_token": "refresh-token",
  "scope": "https://www.googleapis.com/auth/scope",
  "token_type": "Bearer"
}

Panggilan API 4

Otorisasi tidak selesai sebelum Anda melakukan panggilan API dengan token akses user. Panggilan awal ini akan menyelesaikan proses otorisasi dan mengaktifkan peristiwa.

Anda harus menggunakan salah satu panggilan API yang tercantum untuk cakupan yang ditentukan guna menyelesaikan otorisasi.

sdm.service

perangkat

Lihat referensi API devices.list untuk informasi selengkapnya.

curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer access-token'

5 Token Penyegaran

Token akses untuk SDM API hanya valid selama 1 jam, seperti yang tercantum dalam parameter expires_in yang ditampilkan oleh Google OAuth. Jika masa berlaku token akses Anda berakhir, gunakan token refresh untuk mendapatkan token baru.

Lakukan panggilan POST ke endpoint OAuth Google, yang menggantikan:

  1. oauth2-client-id dan oauth2-client-secret dengan Client ID dan Rahasia Klien OAuth2 dari Kredensial Google Cloud
  2. refresh-token dengan kode yang Anda terima saat pertama kali mendapatkan token akses.

Google OAuth menampilkan token akses baru.

Permintaan

curl -L -X POST 'https://www.googleapis.com/oauth2/v4/token?client_id=oauth2-client-id&client_secret=oauth2-client-secret&refresh_token=refresh-token&grant_type=refresh_token'

Respons

{
  "access_token": "new-access-token",
  "expires_in": 3599,
  "scope": "https://www.googleapis.com/auth/scope",
  "token_type": "Bearer"
}