Nachdem Sie Ihre Google Cloud- und Device Access-Projekte erstellt haben, können Sie ein Google-Konto mit einem unterstützten Google Nest-Gerät für die SDM API autorisieren.
Konto verknüpfen
Wenn Sie Gebäude und Geräte sehen möchten, müssen Sie über das PCM ein Google-Konto mit IhremDevice Access -Projekt verknüpfen. Mit PCM kann die user developers die Berechtigung erteilen, auf ihre Gebäude und Gerätedaten zuzugreifen.
In diesem Leitfaden sind Sie sowohl die user als auch die developer.
Öffnen Sie den folgenden Link in einem Webbrowser und ersetzen Sie Folgendes:
- project-id durch Ihre Device Access Project -ID
- oauth2-client-id mit der OAuth2-Client-ID aus Ihren Google Cloud-Anmeldedaten
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 - Wenn Sie sich in letzter Zeit mit mehreren Konten bei Google angemeldet haben, wird möglicherweise zuerst der Bildschirm Konto auswählen mit einer Liste Ihrer Google-Konten angezeigt. Wählen Sie in diesem Fall das Google-Konto aus, das mit den Geräten verknüpft ist, für die Sie die Autorisierung vornehmen möchten. Device Access
- Der Bildschirm Google Nest-Berechtigungen ist PCM selbst. Hier können Sie Gebäude- und Geräteberechtigungen gewähren. Aktivieren Sie die Berechtigungen für Ihr Zuhause (Schritt 1) und alle Geräte in diesem Zuhause, die von der SDM API unterstützt werden (Schritt 2). Klicken Sie dann auf Weiter.
- Wählen Sie auf dem Bildschirm Choose an account to continue to Project Name (Konto auswählen, um mit Project Name fortzufahren), wobei Project Name der Name Ihres Google Cloud-Projekts ist, das Google-Konto aus, das Sie für die SDM API autorisieren möchten. Verwenden Sie dasselbe Google-Konto wie zuvor.
- Nachdem Sie ein Konto ausgewählt haben, wird möglicherweise ein Warnbildschirm mit der Meldung Diese App wurde von Google nicht überprüft angezeigt. Klicken Sie in diesem Fall auf die Option Erweitert und dann auf Zu Projektname (unsicher). Weitere Informationen finden Sie unter Google hat diese App nicht überprüft.
- Klicken Sie auf dem Bildschirm Berechtigung Projektname gewähren auf Zulassen, um dem Projekt die Berechtigung zum Zugriff auf Ihr Google-Konto zu erteilen.
- Prüfen Sie auf dem Bildschirm Auswahl bestätigen, ob die gewünschten Berechtigungen aktiviert sind, und klicken Sie auf Zulassen, um die Auswahl zu bestätigen.
Sie werden zu https://www.google.com weitergeleitet. Der Autorisierungscode wird als Parameter
code
in der URL zurückgegeben. Diese muss folgendermaßen formatiert sein:https://www.google.com?code=authorization-code&
scope=https://www.googleapis.com/auth/sdm.service - Kopieren Sie den Autorisierungscode.
Zugriffstoken anfordern
Verwende den Autorisierungscode, um ein Zugriffstoken abzurufen, mit dem du die SDM API aufrufen kannst.
Öffnen Sie ein Terminal und führen Sie den folgenden
curl
-Befehl aus. Ersetzen Sie dabei:- oauth2-client-id und oauth2-client-secret mit der OAuth2-Client-ID und dem Clientschlüssel aus Ihren Google Cloud-Anmeldedaten
- authorization-code durch den Code, den Sie im vorherigen Schritt erhalten haben
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' Google OAuth gibt zwei Tokens zurück, ein Zugriffstoken und ein Aktualisierungstoken.
Kopieren Sie beide Werte. Mit dem Zugriffstoken wird die SDM API aufgerufen und mit dem Aktualisierungstoken wird ein neues Zugriffstoken abgerufen.{
Gerätelistenanruf starten
Die Autorisierung ist erst abgeschlossen, wenn du deinen ersten devices.list
-Aufruf mit deinem neuen Zugriffstoken getätigt hast. Mit diesem ersten Aufruf wird der Autorisierungsvorgang abgeschlossen und Ereignisse werden aktiviert, wenn Sie bereits ein Pub/Sub-Abo eingerichtet haben.
Verwenden Sie curl
, um diesen Aufruf für den Endpunkt devices
auszuführen:
curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer access-token'
Bei einem erfolgreichen Aufruf wird eine Liste der Geräte zurückgegeben, die mit Ihrem Device Access-Projekt verknüpft sind. Für jedes Gerät ist eine eigene Liste der verfügbaren Merkmale verfügbar:
{ "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" } ] } ] }
Aktualisierungstoken verwenden
Zugriffstokens für die SDM API sind nur eine Stunde lang gültig, wie im von Google OAuth zurückgegebenen Parameter expires_in
angegeben. Wenn Ihr Zugriffstoken abläuft, verwenden Sie das Aktualisierungstoken, um ein neues abzurufen.
Der Befehl ähnelt dem für das Zugriffstoken, mit der Ausnahme, dass du eine andere grant_type
verwendest.
Öffnen Sie ein Terminal und führen Sie den folgenden
curl
-Befehl aus. Ersetzen Sie dabei:- oauth2-client-id und oauth2-client-secret mit der OAuth2-Client-ID und dem Clientschlüssel aus Ihren Google Cloud-Anmeldedaten
- refresh-token mit dem Code, den Sie beim ersten Abrufen des Zugriffstokens erhalten haben.
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' Google OAuth gibt ein neues Zugriffstoken zurück.
{
Fehlerbehebung
Weitere Informationen zu Google OAuth finden Sie im Hilfeartikel Mit OAuth 2.0 auf Google APIs zugreifen.
Aktualisierungstoken läuft immer wieder ab
Aktualisierungstokens können nach 7 Tagen nicht mehr funktionieren, wenn die Client-ID nicht genehmigt wurde. Die Gültigkeitsdauer von sieben Tagen hat nichts mit kommerziellen oder Sandbox-Genehmigungen zu tun. Die OAuth 2.0-Client-ID eines Dienstes oder Nutzerkontos muss genehmigt und in Produktion genommen werden, um eine längere Tokengültigkeit zu erhalten. Weitere Informationen finden Sie unter Ablauf des Aktualisierungstokens.
Zugriff verweigert
Wenn Sie Ihren OAuth-Zustimmungsbildschirm in Google Cloud eingerichtet haben und der Nutzertyp Extern ist, erhalten Sie den Fehler „Zugriff verweigert“, wenn Sie versuchen, eine Kontoverknüpfung mit einem Google-Konto herzustellen, das nicht als Testnutzer für Ihre App aufgeführt ist. Fügen Sie das Google-Konto unbedingt im Bereich Testnutzer Ihres OAuth-Zustimmungsbildschirms hinzu.
Fehler beim Partner Connections Manager (PCM)
Informationen zu Fehlern beim Zugriff auf PCM finden Sie in der PCM-Fehlerreferenz.
Google hat diese App nicht überprüft
Für die SDM API wird ein eingeschränkter Bereich verwendet. Das bedeutet, dass alle Apps, die diesen Bereich bei der Autorisierung verwenden, als „nicht bestätigt“ eingestuft werden, es sei denn, die OAuth API-Bestätigung wurde abgeschlossen. Wenn du Device Access für den privaten Gebrauch verwendest, ist die OAuth API-Bestätigung nicht erforderlich.
Während des Autorisierungsvorgangs wird möglicherweise der Bildschirm „Diese App wurde von Google nicht überprüft“ angezeigt. Das ist der Fall, wenn der Bereich sdm.service
nicht auf dem OAuth-Zustimmungsbildschirm in Google Cloud konfiguriert ist. Sie können diesen Bildschirm umgehen, indem Sie auf die Option Erweitert und dann auf Zu Projektname (unsicher) gehen.
Weitere Informationen finden Sie unter Bildschirm für nicht bestätigte Apps.
Ungültiger Client
Wenn Sie versuchen, ein Zugriffs- oder Aktualisierungstoken abzurufen, erhalten Sie den Fehler „Ungültiger Client“, wenn Sie ein falsches OAuth 2.0-Client-Secret angeben. Der Wert für client_secret
, den Sie in Aufrufen von Zugriffs- und Aktualisierungstokens verwenden, muss mit dem Wert für die verwendete OAuth 2.0-Client-ID übereinstimmen, der auf der Seite Google Cloud-Anmeldedaten zu finden ist.
Ungültige Anfrage, erforderlicher Bereich fehlt
Nachdem Sie Berechtigungen in PCM erteilt haben, kann der Fehler „Ungültige Anfrage“ mit der Meldung „Fehlender erforderlicher Parameter: scope“ auftreten. Der Wert für scope
, den Sie in Autorisierungsaufrufen verwenden, muss mit dem Wert übereinstimmen, den Sie für den OAuth 2.0-Client auf der Seite Google Cloud-Anmeldedaten festgelegt haben.
Nicht übereinstimmende Weiterleitungs-URI
Bei der Autorisierung kann der Fehler „Redirect URI mismatch“ (Weiterleitungs-URI stimmt nicht überein) auftreten. Der Wert für redirect_uri
, den Sie in Autorisierungsanrufen verwenden, muss mit dem Wert übereinstimmen, den Sie für den OAuth 2.0-Client auf der Seite Google Cloud-Anmeldedaten festgelegt haben.
Kontoberechtigungen ändern
Wenn Sie die für ein Device Access Projekt erteilten Berechtigungen ändern oder die Verknüpfung vollständig aufheben möchten, rufen Sie das PCM auf:
https://nestservices.google.com/partnerconnections
Auf dieser Seite werden alle Drittanbieterdienste (Device Access Projekte) angezeigt, die mit Ihrem Konto verknüpft sind. Wählen Sie das Device Access Projekt aus, das Sie ändern möchten. Ändern Sie die Berechtigungen auf dem nächsten Bildschirm wie gewünscht.
Wenn Sie nur bestimmte Berechtigungen für einen autorisierten Dienst widerrufen möchten, deaktivieren Sie die entsprechenden Berechtigungen und klicken Sie auf den Zurückpfeil, um sie zu speichern.
Wenn Sie die Verknüpfung eines autorisierten Dienstes vollständig aufheben möchten, klicken Sie auf Verknüpfung mit Ihrem Google-Konto aufheben, um alle Berechtigungen und Zugriffstokens zu widerrufen, die dem Projekt für das Konto gewährt wurden.
Wenn der gewünschte Dienst in PCM nicht angezeigt wird, musst du möglicherweise zuerst einen Gerätelistenaufruf starten.
Kurzreferenz
In dieser Referenz erfährst du, wie du schnell eineuser autorisieren und ihr Google-Konto verknüpfen kannst.
Bearbeiten Sie dazu jede Platzhaltervariable in den Codebeispielen mit den Werten für Ihre jeweilige Integration und kopieren Sie sie nach Bedarf:
1 PCM
Öffnen Sie den folgenden Link in einem Webbrowser und ersetzen Sie Folgendes:
- project-id durch Ihre Device Access Project -ID
- oauth2-client-id mit der OAuth2-Client-ID aus Ihren Google Cloud-Anmeldedaten
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-Faktor-Authentifizierungscode
Sie werden zu https://www.google.com weitergeleitet. Der Autorisierungscode wird als Parameter code
in der URL zurückgegeben. Diese sollte dieses Format haben:
https://www.google.com?code=authorization-code&scope=https://www.googleapis.com/auth/sdm.service
3. Zugriffstoken
Verwende den Autorisierungscode, um ein Zugriffstoken abzurufen, mit dem du die SDM API aufrufen kannst.
Öffnen Sie ein Terminal und führen Sie den folgenden curl
-Befehl aus. Ersetzen Sie dabei:
- oauth2-client-id und oauth2-client-secret mit der OAuth2-Client-ID und dem Clientschlüssel aus Ihren Google Cloud-Anmeldedaten
- authorization-code durch den Code, den Sie im vorherigen Schritt erhalten haben
Google OAuth gibt zwei Tokens zurück, ein Zugriffstoken und ein Aktualisierungstoken.
Anfrage
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'
Antwort
{"access_token": "access-token",
"expires_in": 3599,
"refresh_token": "refresh-token",
"scope": "https://www.googleapis.com/auth/sdm.service",
"token_type": "Bearer" }
4. API-Aufruf
Die Autorisierung ist erst abgeschlossen, wenn du deinen ersten devices.list
-Aufruf mit deinem neuen Zugriffstoken getätigt hast. Mit diesem ersten Aufruf wird der Autorisierungsvorgang abgeschlossen und Ereignisse werden aktiviert, wenn Sie bereits ein Pub/Sub-Abo eingerichtet haben.
Sie müssen einen der für den angegebenen Umfang aufgeführten API-Aufrufe verwenden, um die Autorisierung abzuschließen.
sdm.service
Geräte
Weitere Informationen finden Sie in der API-Referenz für devices.list
.
curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer access-token'
5 Aktualisierungstoken
Zugriffstokens für die SDM API sind nur eine Stunde lang gültig, wie im von Google OAuth zurückgegebenen Parameter expires_in
angegeben. Wenn Ihr Zugriffstoken abläuft, verwenden Sie das Aktualisierungstoken, um ein neues abzurufen.
Öffnen Sie ein Terminal und führen Sie den folgenden curl
-Befehl aus. Ersetzen Sie dabei:
- oauth2-client-id und oauth2-client-secret mit der OAuth2-Client-ID und dem Clientschlüssel aus Ihren Google Cloud-Anmeldedaten
- refresh-token mit dem Code, den Sie beim ersten Abrufen des Zugriffstokens erhalten haben.
Google OAuth gibt ein neues Zugriffstoken zurück.
Anfrage
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'
Antwort
{"access_token": "new-access-token",
"expires_in": 3599,
"scope": "https://www.googleapis.com/auth/sdm.service",
"token_type": "Bearer" }