Memberi Otorisasi pada Akun

Setelah membuat project Google Cloud dan Akses Perangkat, Anda dapat memberikan otorisasi ke Akun Google dengan perangkat Google Nest yang didukung untuk API SDM.

Untuk melihat struktur dan perangkat, Anda harus menautkan Akun Google ke Device Access menggunakan PCM. PCM memungkinkan user memberikan izin kepada memungkinkan developeruntuk mengakses struktur dan data perangkatnya.

Dalam panduan ini, Anda berperan sebagai user dan developer.

  1. Buka link berikut di web browser, dengan mengganti:

    1. project-id dengan Device Access Project ID Anda
    2. oauth2-client-id dengan ID Klien OAuth2 dari Google Cloud Kredensial
    https://nestservices.google.com/partnerconnections/project-id/auth?redirect_uri=https://www.google.com&access_type=offline&prompt=consent&client_id=oauth2-client-id&response_type=code&scope=https://www.googleapis.com/auth/sdm.service
    
  2. Jika Anda baru-baru ini login ke Google dengan beberapa akun, Anda mungkin layar awal Pilih akun yang berisi daftar Akun Google. Jika ya, pilih Akun Google yang terkait dengan perangkat yang ingin diotorisasi untuk Device Access.
  3. Layar izin Google Nest adalah PCM itu sendiri. Di sini Anda dapat memberikan izin struktur dan perangkat. Aktifkan izin akses untuk rumah Anda (Langkah 1) dan perangkat apa pun di rumah tersebut yang didukung oleh SDM API (Langkah 2), lalu klik Next.
  4. Di layar Choose an account to continue to Project Name, tempat Project Name adalah nama project Google Cloud Anda, pilih Akun Google yang ingin Anda beri otorisasi untuk API SDM. Gunakan Akun Google yang sama seperti sebelumnya.
  5. Setelah memilih akun, Anda mungkin mendapatkan layar peringatan yang menyatakan Google belum memverifikasi aplikasi ini. Jika demikian, untuk melanjutkan, klik Advanced, lalu klik Go to Project Name (unsafe). Lihat Google belum memverifikasi aplikasi ini untuk informasi lebih lanjut tidak akurat atau tidak sesuai.
  6. Di layar Grant Project Name, klik Allow untuk memberi izin project untuk mengakses Akun Google Anda.
  7. Di layar Konfirmasi pilihan Anda, pastikan izin yang Anda inginkan yang akan diberikan akan dicentang dan klik Izinkan untuk mengonfirmasi.
  8. Anda akan dialihkan ke https://www.google.com. Kode Otorisasi ditampilkan sebagai parameter code di URL, yang harus dalam format ini:

    https://www.google.com?code=authorization-code&scope=https://www.googleapis.com/auth/sdm.service
    
  9. Salin kode otorisasi.

Mendapatkan token akses

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

  1. Buka terminal dan jalankan perintah curl berikut, menggantikan:

    1. oauth2-client-id dan oauth2-client-secret dengan ID Klien OAuth2 dan Rahasia Klien dari Google Cloud Kredensial
    2. authorization-code dengan kode yang Anda terima di langkah sebelumnya
    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=https://www.google.com'
    
  2. Google OAuth menampilkan dua token, yaitu token akses dan token refresh.

    {
      "access_token": "access-token",
      "expires_in": 3599,
      "refresh_token": "refresh-token",
      "scope": "https://www.googleapis.com/auth/sdm.service",
      "token_type": "Bearer"
    }
    Salin kedua nilai ini. Token akses digunakan untuk memanggil SDM API dan token refresh digunakan untuk mendapatkan token masing-masing.

Melakukan panggilan daftar perangkat

Otorisasi tidak selesai sampai Anda membuat pertama Anda devices.list token akses baru Anda. Ini panggilan awal akan menyelesaikan proses otorisasi dan mengaktifkan peristiwa jika Anda telah menyiapkan langganan Pub/Sub.

Gunakan curl guna melakukan panggilan ini untuk endpoint devices:

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

Panggilan yang berhasil akan menampilkan daftar perangkat yang ditautkan ke Device AccessAnda proyek. Setiap perangkat memiliki daftar karakteristik unik yang tersedia:

{
  "devices": [
    {
      "name": "enterprises/project-id/devices/device-id",
      "type": "sdm.devices.types.device-type",
      "traits": { ... },
      "parentRelations": [
        {
          "parent": "enterprises/project-id/structures/structure-id/rooms/room-id",
          "displayName": "device-room-name"
        }
      ]
    }
  ]
}

Cara menggunakan token refresh

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

Perintah ini mirip dengan token akses satu, kecuali Anda menggunakan token grant_type.

  1. Buka terminal dan jalankan perintah curl berikut, menggantikan:

    1. oauth2-client-id dan oauth2-client-secret dengan ID Klien OAuth2 dan Rahasia Klien dari Google Cloud Kredensial
    2. refresh-token dengan kode yang Anda terima saat pertama kali mendapatkan akses sebelumnya yang benar.
    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'
    
  2. Google OAuth menampilkan token akses baru.

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

Pemecahan masalah

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

Masa berlaku token refresh akan terus berakhir

Token refresh dapat berhenti berfungsi setelah 7 hari jika client ID tidak disetujui satu kemungkinan penyebabnya. Masa berlaku token 7 hari tidak terkait dengan Komersial atau persetujuan Sandbox. Layanan atau akun pengguna harus mendapatkan OAuth 2.0. disetujui dan dimasukkan ke dalam produksi untuk mendapatkan masa pakai token yang lebih lama. Lihat Masa berlaku token pembaruan untuk informasi selengkapnya tidak akurat atau tidak sesuai.

Akses ditolak

Jika Anda telah menyiapkan layar izin OAuth di Google Cloud dan Jenis pengguna adalah Eksternal, Anda akan mendapatkan pesan "Akses ditolak" {i>error<i} jika Anda mencoba menautkan akun dengan Akun Google yang tidak terdaftar sebagai pengguna uji coba untuk aplikasi Anda. Pastikan untuk menambahkan Akun Google ke bagian Pengguna pengujian di layar izin OAuth Anda.

Error Partner Connections Manager (PCM)

Untuk mendapatkan bantuan tentang error yang ditemukan saat mengakses PCM, lihat Pengelola Koneksi Partner (PCM) Referensi Error.

Google belum memverifikasi aplikasi ini

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

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

Lihat Aplikasi yang belum terverifikasi layar untuk informasi selengkapnya.

Klien tidak valid

Saat mencoba mendapatkan token akses atau refresh, Anda akan mendapatkan pesan "Tidak valid klien" jika Anda memberikan Rahasia Klien OAuth 2.0 yang salah. Pastikan Nilai client_secret yang Anda gunakan dalam akses dan panggilan token refresh adalah yang untuk ID Klien OAuth 2.0 yang digunakan, seperti yang ditemukan di Google Cloud Kredensial kami.

Permintaan tidak valid, cakupan yang diperlukan tidak ada

Setelah memberikan izin di PCM, Anda mungkin akan menghadapi "Permintaan tidak valid" error "Parameter yang diperlukan tidak ada: cakupan". Pastikan Nilai scope yang Anda gunakan dalam panggilan otorisasi sama dengan nilai yang Anda tetapkan untuk Klien OAuth 2.0, seperti yang ditemukan di file Google Cloud Kredensial kami.

URI pengalihan tidak cocok

Saat melalui otorisasi, Anda mungkin mengalami "Ketidaksesuaian pengalihan uri" {i>error<i}. Pastikan nilai redirect_uri yang Anda gunakan dalam panggilan otorisasi sama dengan yang Anda tetapkan untuk Klien OAuth 2.0, seperti yang ditemukan di Google Cloud Kredensial kami.

Ubah izin akun

Untuk mengubah izin yang diberikan ke Device Access project, atau memutuskan koneksinya sepenuhnya, buka PCM:

https://nestservices.google.com/partnerconnections

Halaman ini menampilkan semua layanan developer pihak ketiga (Device Access project) terhubung dengan akun Anda. Pilih project Device Access yang ingin Anda berubah. Gunakan layar berikutnya untuk mengubah izin sesuai keinginan.

Untuk mencabut izin tertentu saja untuk layanan yang telah diberi otorisasi, aktifkan/nonaktifkan izin akses yang ingin Anda cabut dan klik panah kembali untuk menyimpan.

Untuk memutuskan sambungan layanan yang sah sepenuhnya, klik Batalkan tautan layanan Google Account untuk mencabut semua izin dan token akses yang telah ditetapkan untuk project diberikan untuk akun tersebut.

Jika PCM tidak menampilkan layanan yang diinginkan, Anda mungkin perlu buat panggilan daftar perangkat terlebih dahulu.

Referensi cepat

Gunakan referensi ini untuk menerapkan langkah-langkah otorisasi dengan cepat user dan menautkan Akun Google-nya kami.

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

1 PCM

Buka link berikut di web browser, dengan mengganti:

  1. project-id dengan Device Access Project ID Anda
  2. oauth2-client-id dengan ID Klien OAuth2 dari Google Cloud Kredensial
https://nestservices.google.com/partnerconnections/project-id/auth?redirect_uri=https://www.google.com&access_type=offline&prompt=consent&client_id=oauth2-client-id&response_type=code&scope=https://www.googleapis.com/auth/sdm.service

2 Kode Autentikasi

Anda akan dialihkan ke https://www.google.com. Kode Otorisasi ditampilkan sebagai parameter code di URL, yang harus dalam format ini:

https://www.google.com?code=authorization-code&scope=https://www.googleapis.com/auth/sdm.service

3 Token Akses

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

Buka terminal dan jalankan perintah curl berikut, menggantikan:

  1. oauth2-client-id dan oauth2-client-secret dengan ID Klien OAuth2 dan Rahasia Klien dari Google Cloud Kredensial
  2. authorization-code dengan kode yang Anda terima di langkah sebelumnya

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=https://www.google.com'

Respons

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

4 Panggilan API

Otorisasi tidak selesai sampai Anda membuat pertama Anda devices.list token akses baru Anda. Ini panggilan awal akan menyelesaikan proses otorisasi dan mengaktifkan peristiwa jika Anda telah menyiapkan langganan Pub/Sub.

Anda harus menggunakan salah satu Panggilan API dicantumkan untuk cakupan yang ditentukan guna menyelesaikan otorisasi.

sdm.service

perangkat

Lihat devices.list Referensi API 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, sebagaimana tercantum dalam parameter expires_in yang ditampilkan oleh Google OAuth. Jika masa berlaku token akses Anda habis, gunakan token pembaruan untuk mendapatkan token baru.

Buka terminal dan jalankan perintah curl berikut, menggantikan:

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

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'

Tanggapan

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