Mit Ihren Google Cloud- und Gerätezugriff-Projekten ein Google-Konto mit einem unterstützten Google Nest-Gerät für die SDM API
Konto verknüpfen
Wenn du Gebäude und Geräte sehen möchtest, musst du ein Google-Konto mit deinem Device Access mit dem PCM-Projekt erstellen. PCM ermöglicht es dem user , die Berechtigung zu erteilen, developererlauben, auf ihre Strukturen und Gerätedaten zuzugreifen.
In diesem Leitfaden dienen Sie sowohl als user als auch als developer.
Den folgenden Link in einem Web öffnen Browser. Ersetzen Sie dabei:
- project-id durch deine Device Access Project ID
- oauth2-client-id durch die OAuth2-Client-ID von 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 kürzlich mit mehreren Konten bei Google angemeldet haben, wird der erste Bildschirm Konto auswählen mit einer Liste Ihrer Google-Konten. Wählen Sie in diesem Fall das Google-Konto aus, das mit den Geräten verknüpft ist, die Sie für Device Accessautorisieren möchten.
- Der Bildschirm Google Nest-Berechtigungen ist PCM. Hier kannst du Berechtigungen für die Struktur und Geräte erteilen. Aktivieren Sie die für Ihr Zuhause (Schritt 1) und alle Geräte in diesem Zuhause, die von der SDM API unterstützt werden (Schritt 2), und klicken Sie dann auf Weiter.
- Auf dem Bildschirm Wählen Sie ein Konto aus, um zum Bildschirm Projektname zu gelangen, Projektname ist der Name Ihres Google Cloud-Projekts. Wählen Sie das Google-Konto, das Sie für die SDM API Verwenden Sie dasselbe Google-Konto wie zuvor.
- Nachdem Sie ein Konto ausgewählt haben, wird möglicherweise ein Warnhinweis angezeigt Google hat diese App nicht überprüft. Ist dies der Fall, klicken Sie auf das Symbol Advanced (Erweitert) und klicken Sie dann auf Go to Project Name (Projektname) (unsicher). Weitere Informationen finden Sie unter Google hat diese App nicht überprüft. Informationen.
- Klicken Sie auf dem Bildschirm Berechtigung Projektname gewähren auf Zulassen, um Projektberechtigung für den Zugriff auf Ihr Google-Konto.
- Prüfen Sie auf dem Bildschirm Auswahl bestätigen, ob die gewünschten Berechtigungen aktiviert sind, und klicken Sie zur Bestätigung auf Zulassen.
Sie werden zu folgender URL weitergeleitet: https://www.google.com. Der Autorisierungscode wird als
code
-Parameter in der URL zurückgegeben. Er sollte folgendes Format haben:https://www.google.com?code=authorization-code&
scope=https://www.googleapis.com/auth/sdm.service - Kopieren Sie den Autorisierungscode.
Zugriffstoken anfordern
Verwenden Sie den Autorisierungscode zum Abrufen eines Zugriffstokens, das die Sie zum Aufrufen der SDM API verwenden können.
Terminal öffnen und ausführen den folgenden
curl
-Befehl und ersetzen Sie dabei:- oauth2-client-id und oauth2-client-secret mit der OAuth2-Client-ID und dem Clientschlüssel aus deinem 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 Token zurück: ein Zugriffstoken und ein Aktualisierungstoken.
Kopieren Sie diese beiden Werte. Mit dem Zugriffstoken wird die SDM API und das Aktualisierungstoken wird verwendet, um eine neue ein Zugriffstoken hinzufügen.{
Anruf über die Geräteliste starten
Die Autorisierung ist erst abgeschlossen,
deine erste
devices.list
mit Ihrem neuen Zugriffstoken aufrufen. Dieses
Der erste Aufruf beendet den Autorisierungsprozess und aktiviert Ereignisse, wenn
Sie haben bereits ein Pub/Sub-Abo eingerichtet.
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 Anruf wird eine Liste der Geräte zurückgegeben, die mit Device Accessverknüpft sind Projekt arbeiten. Jedes Gerät hat eine eigene Liste mit verfügbaren Eigenschaften:
{ "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
1 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 zu erhalten.
Der Befehl ähnelt dem Zugriffstoken mit der Ausnahme, dass Sie einen anderen
grant_type
Öffnen Sie ein Terminal und führen Sie den folgenden
curl
-Befehl. Ersetzen Sie dabei:- oauth2-client-id und oauth2-client-secret mit der OAuth2-Client-ID und dem Clientschlüssel aus deinem Google Cloud Anmeldedaten
- refresh-token durch den Code, den Sie erhalten haben, als Sie den Zugriff erhalten haben Token.
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 unter OAuth 2.0 für den Zugriff auf Google verwenden APIs
Aktualisierungstoken läuft immer wieder ab
Aktualisierungstokens funktionieren möglicherweise nach 7 Tagen nicht mehr, wenn die Client-ID nicht genehmigt wurde: eine mögliche Ursache. Der Ablauf des 7-Tage-Tokens hat nichts mit dem kommerziellen Angebot zu tun oder Sandbox-Genehmigungen. Ein Dienst oder ein Nutzerkonto muss OAuth abrufen. 2.0-Client-ID genehmigt und eingeführt, um Token-Lebensdauer zu verlängern. Weitere Informationen finden Sie unter Ablauf des Aktualisierungstokens. Informationen.
Zugriff verweigert
Wenn Sie Ihren OAuth-Zustimmungsbildschirm in Google Cloud eingerichtet haben und Nutzertyp Extern ist, erhalten Sie die Meldung „Zugriff verweigert“. Fehler, wenn Sie Versuch, eine Kontoverknüpfung mit einem Google-Konto herzustellen, das nicht als Testnutzer aufgeführt ist für Ihre App. Fügen Sie das Google-Konto im Abschnitt Testnutzer hinzu. in Ihrem OAuth-Zustimmungsbildschirm.
PCM-Fehler (Partner Connections Manager)
Hilfe zu Fehlern, die beim Zugriff auf PCM, siehe Partner Connections Manager (PCM) Fehlerreferenz.
Google hat diese App nicht überprüft
Die SDM API verwendet einen eingeschränkten Bereich. Das bedeutet, dass alle Apps, die diesen Bereich bei der Autorisierung verwenden, werden „nicht überprüft“ es sei denn Die OAuth API-Überprüfung ist abgeschlossen. Verwendung für Device Access ist die OAuth API-Überprüfung nicht erforderlich.
Möglicherweise wird die Meldung „Google hat diese App nicht überprüft“ angezeigt. während des Autorisierungsvorgangs
Prozess (wird angezeigt, wenn der Bereich sdm.service
nicht konfiguriert ist für
den OAuth-Zustimmungsbildschirm in Google Cloud. Dieser Bildschirm kann
umgangen werden, indem Sie auf die Option Advanced (Erweitert) und dann auf Go to Project
Name (unsicher):
Siehe Nicht überprüfte Anwendung Bildschirm .
Ungültiger Client
Beim Versuch, ein Zugriffs- oder Aktualisierungstoken abzurufen, wird die Fehlermeldung „Ungültige
Kunde“ wenn Sie einen falschen OAuth 2.0-Clientschlüssel angeben. Achten Sie darauf, dass die
Der client_secret
-Wert, den Sie in Zugriffs- und Aktualisierungstokenaufrufen verwenden, ist der Wert
für die verwendete OAuth 2.0-Client-ID, die in Ihrem
Google Cloud
Anmeldedaten
Seite.
Ungültige Anfrage, erforderlicher Bereich fehlt
Nachdem Sie Berechtigungen in PCM gewährt haben, können Sie auf eine
„Ungültige Anfrage“ „Erforderlicher Parameter fehlt: Bereich“. Achten Sie darauf, dass die
Der in Autorisierungsaufrufen verwendete scope
-Wert ist identisch mit dem Wert, den Sie für den OAuth 2.0-Client festgelegt haben.
wie Sie in Ihrem Google Cloud-
Anmeldedaten
Seite.
Weiterleitungs-URI stimmt nicht überein
Im Rahmen der Autorisierung kann es zu einer Abweichung der Weiterleitungs-URI kommen
Fehler. Der redirect_uri
-Wert, den Sie in Autorisierungsaufrufen verwenden, muss
mit der für den OAuth 2.0-Client festgelegten
Google Cloud
Anmeldedaten
Seite.
Kontoberechtigungen ändern
So ändern Sie die Berechtigungen für ein Device Access Projekt oder heben die Verbindung auf gehen Sie zu PCM:
https://nestservices.google.com/partnerconnections
Auf dieser Seite werden alle Entwicklerdienste von Drittanbietern angezeigt (Device Access Projekte) die mit Ihrem Konto verknüpft sind. Wählen Sie das Device Access Projekt aus, das Sie ändern können. Im nächsten Bildschirm können Sie die Berechtigungen nach Bedarf ändern.
Um nur bestimmte Berechtigungen für einen autorisierten Dienst zu widerrufen, aktivieren Sie das Kontrollkästchen neben Berechtigungen, die Sie widerrufen möchten, und klicken Sie zum Speichern auf den Zurück-Pfeil.
Um die Verbindung zu einem autorisierten Dienst vollständig zu trennen, klicken Sie auf Verknüpfung mit Ihrem Konto, um alle Berechtigungen und Zugriffstokens zu widerrufen, die für das Projekt verwendet wurden die für das Konto gewährt wurden.
Wenn PCM den gewünschten Dienst nicht anzeigt, müssen Sie möglicherweise Anruf über die Geräteliste starten.
Kurzreferenz
Verwenden Sie diese Referenz, um die Schritte zum Autorisieren eines user und verknüpfen ihr/sein Google-Konto .
Bearbeiten Sie jede Platzhaltervariable in den Codebeispielen, um diese Schnellreferenz zu verwenden Geben Sie die Werte für Ihre spezifische Integration ein und kopieren Sie sie und fügen Sie sie nach Bedarf ein:
1 PCM
Den folgenden Link in einem Web öffnen Browser. Dabei wird:
- project-id durch deine Device Access Project ID
- oauth2-client-id durch die OAuth2-Client-ID von 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 Auth-Code
Sie werden zu folgender URL weitergeleitet:
https://www.google.com. Der Autorisierungscode wird als code
-Parameter in der URL zurückgegeben.
Er sollte folgendes Format haben:
https://www.google.com?code=authorization-code&scope=https://www.googleapis.com/auth/sdm.service
3 Zugriffstoken
Verwenden Sie den Autorisierungscode zum Abrufen eines Zugriffstokens, das die Sie zum Aufrufen der SDM API verwenden können.
Terminal öffnen und ausführen
den folgenden curl
-Befehl und ersetzen Sie dabei:
- oauth2-client-id und oauth2-client-secret mit der OAuth2-Client-ID und dem Clientschlüssel aus deinem Google Cloud Anmeldedaten
- authorization-code durch den Code, den Sie im vorherigen Schritt erhalten haben
Google OAuth gibt zwei Token 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,
deine erste
devices.list
mit Ihrem neuen Zugriffstoken aufrufen. Dieses
Der erste Aufruf beendet den Autorisierungsprozess und aktiviert Ereignisse, wenn
Sie haben bereits ein Pub/Sub-Abo eingerichtet.
Sie müssen eine der Für den angegebenen Bereich aufgelistete API-Aufrufe, um die Autorisierung abzuschließen.
sdm.service
Geräte
Weitere Informationen finden Sie in der
devices.list
API-Referenz für weitere Informationen.
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
1 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 zu erhalten.
Öffnen Sie ein Terminal und führen Sie den
folgenden curl
-Befehl. Ersetzen Sie dabei:
- oauth2-client-id und oauth2-client-secret mit der OAuth2-Client-ID und dem Clientschlüssel aus deinem Google Cloud Anmeldedaten
- refresh-token durch den Code, den Sie erhalten haben, als Sie den Zugriff erhalten haben Token.
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" }