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 ansehen möchten, müssen Sie ein Google-Konto über das PCM mit IhremDevice Access -Projekt verknüpfen. PCM ermöglicht es user , die Berechtigung zu erteilen, dass developers auf ihre Strukturen und Gerätedaten zugreifen können.
In diesem Leitfaden dienen Sie als user und developer.
Öffnen Sie den folgenden Link in einem Webbrowser und ersetzen Sie dabei Folgendes:
- project-id durch Ihre Device Access Project ID
- oauth2-client-id durch die 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 kürzlich mit mehreren Konten bei Google angemeldet haben, wird möglicherweise 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, die Sie für Device Accessautorisieren möchten.
- Der Google Nest-Berechtigungsbildschirm wird vom PCM selbst angezeigt. Hier können Sie Berechtigungen für Struktur und Geräte erteilen. 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) und klicken Sie dann auf Weiter.
- Wählen Sie im Bildschirm Konto auswählen, um mit Projektname fortzufahren das Google-Konto aus, das Sie für die SDM API autorisieren möchten, wobei Projektname der Name Ihres Google Cloud-Projekts ist. Verwenden Sie dasselbe Google-Konto wie zuvor.
- Nachdem Sie ein Konto ausgewählt haben, wird möglicherweise ein Warnhinweis angezeigt, dass Google diese App nicht bestätigt hat. Wenn ja, klicken Sie zum Fortfahren auf die Option Erweitert und dann auf Zum Projektnamen wechseln (unsicher). Weitere Informationen finden Sie unter Google hat diese Anwendung nicht überprüft.
- Klicken Sie auf dem Bildschirm Berechtigung Projektname gewähren auf Zulassen, um dem Projekt die Berechtigung für den Zugriff auf Ihr Google-Konto zu erteilen.
- Achten Sie darauf, dass auf dem Bildschirm Auswahl bestätigen die Berechtigungen ausgewählt sind, die Sie gewähren möchten, und klicken Sie zur Bestätigung auf Zulassen.
Sie sollten zu https://www.google.com weitergeleitet werden. Der Autorisierungscode wird in der URL als
code
-Parameter zurückgegeben. Er muss das folgende Format haben:https://www.google.com?code=authorization-code&
scope=https://www.googleapis.com/auth/sdm.service - Kopieren Sie den Autorisierungscode.
Zugriffstoken anfordern
Rufen Sie mit dem Autorisierungscode ein Zugriffstoken ab, mit dem Sie die SDM API aufrufen können.
Öffnen Sie ein Terminal und führen Sie den folgenden
curl
-Befehl aus. Ersetzen Sie dabei Folgendes:- oauth2-client-id und oauth2-client-secret durch die OAuth2-Client-ID und den 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 ein neues Zugriffstoken abgerufen.
Gerätelisten anrufen
Die Autorisierung ist erst abgeschlossen, wenn Sie zum ersten Mal devices.list
mit dem neuen Zugriffstoken aufrufen. Dieser erste Aufruf beendet den Autorisierungsprozess und aktiviert Ereignisse, wenn Sie bereits ein Pub/Sub-Abo eingerichtet haben.
Verwenden Sie curl
, um diesen Aufruf für den Endpunkt devices
durchzufü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. Jedes Gerät hat seine eigene Liste der verfügbaren Traits:
{ "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" } ] } ] }
Aktualisierungstokens verwenden
Zugriffstokens für die SDM API sind nur eine Stunde lang gültig, wie im expires_in
-Parameter angegeben, der von Google OAuth zurückgegeben wird. Falls das Zugriffstoken abläuft, können Sie mit dem Aktualisierungstoken ein neues anfordern.
Der Befehl ähnelt dem Zugriffstoken eins, nur dass Sie einen anderen grant_type
verwenden.
Öffnen Sie ein Terminal und führen Sie den folgenden
curl
-Befehl aus. Ersetzen Sie dabei Folgendes:- oauth2-client-id und oauth2-client-secret durch die OAuth2-Client-ID und den Clientschlüssel aus Ihren Google Cloud-Anmeldedaten
- refresh-token durch den 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 unter Mit OAuth 2.0 auf Google APIs zugreifen.
Aktualisierungstoken läuft weiterhin ab
Aktualisierungstokens können nach 7 Tagen nicht mehr funktionieren, wenn die Client-ID nicht genehmigt wurde. Der 7-tägige Ablauf des Tokens steht nicht im Zusammenhang mit kommerziellen oder Sandbox-Genehmigungen. Die OAuth 2.0-Client-ID eines Dienst- oder Nutzerkontos muss genehmigt und in der Produktion bereitgestellt werden, um eine längere Tokenlebensdauer 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, wird die Fehlermeldung „Zugriff verweigert“ angezeigt, wenn Sie versuchen, eine Kontoverknüpfung mit einem Google-Konto zu erstellen, das nicht als Testnutzer für Ihre Anwendung aufgeführt ist. Fügen Sie das Google-Konto auf Ihrem OAuth-Zustimmungsbildschirm im Abschnitt Testnutzer hinzu.
PCM-Fehler (Partner Connections Manager)
Informationen zu Fehlern beim Zugriff auf PCM finden Sie in der PCM-Fehlerreferenz (Partner Connections Manager).
Google hat diese App nicht überprüft
Die SDM API nutzt einen eingeschränkten Bereich. Das bedeutet, dass alle Anwendungen, die diesen Bereich während der Autorisierung nutzen, als nicht bestätigt gelten, bis die OAuth API-Überprüfung abgeschlossen ist. Bei der privaten Verwendung von Device Access ist keine OAuth API-Bestätigung erforderlich.
Während des Autorisierungsvorgangs wird möglicherweise der Bildschirm „Google hat diese Anwendung nicht überprüft“ angezeigt. Dieser wird angezeigt, wenn der Bereich sdm.service
in Ihrem OAuth-Zustimmungsbildschirm in Google Cloud nicht konfiguriert ist. Sie können diesen Bildschirm umgehen, indem Sie auf die Option Advanced (Erweitert) und dann auf Go to Project
Name (unsicher) klicken.
Weitere Informationen finden Sie unter Bildschirm für nicht überprüfte Anwendung.
Ungültiger Kunde
Wenn Sie versuchen, ein Zugriffs- oder Aktualisierungstoken abzurufen, erhalten Sie die Fehlermeldung „Ungültiger Client“, wenn Sie einen falschen OAuth 2.0-Clientschlüssel eingeben. Achten Sie darauf, dass der client_secret
-Wert, den Sie in Aufrufen von Zugriffs- und Aktualisierungstokens verwenden, der Wert für die verwendete OAuth 2.0-Client-ID ist, die Sie auf der Seite Google Cloud-Anmeldedaten finden.
Ungültige Anfrage, erforderlicher Bereich fehlt
Nachdem Sie Berechtigungen in PCM gewährt haben, wird möglicherweise der Fehler „Ungültige Anfrage“ wie „Erforderlicher Parameter fehlt: Bereich“ angezeigt. Achten Sie darauf, dass der scope
-Wert, den Sie in Autorisierungsaufrufen verwenden, mit dem Wert übereinstimmt, den Sie für den OAuth 2.0-Client auf der Seite Google Cloud-Anmeldedaten festgelegt haben.
Nicht übereinstimmende Weiterleitungs-URIs
Beim Durchführen der Autorisierung kann der Fehler "Weiterleitungs-URI-Abweichung" auftreten. Achten Sie darauf, dass der redirect_uri
-Wert, den Sie in Autorisierungsaufrufen verwenden, mit dem Wert übereinstimmt, den Sie für den OAuth 2.0-Client auf der Seite Google Cloud-Anmeldedaten festgelegt haben.
Kontoberechtigungen ändern
Rufen Sie PCM auf, um die einem Device Access -Projekt gewährten Berechtigungen zu ändern oder die Verbindung vollständig zu trennen:
https://nestservices.google.com/partnerconnections
Auf dieser Seite werden alle Entwicklerdienste von Drittanbietern (Device Access Projekte) angezeigt, die mit Ihrem Konto verknüpft sind. Wählen Sie das Device Access Projekt aus, das Sie ändern möchten. Auf dem nächsten Bildschirm können Sie die Berechtigungen nach Bedarf ändern.
Wenn Sie nur bestimmte Berechtigungen für einen autorisierten Dienst widerrufen möchten, ändern Sie die Berechtigungen, die Sie widerrufen möchten, und klicken Sie zum Speichern auf den Zurückpfeil.
Wenn Sie einen autorisierten Dienst vollständig trennen möchten, klicken Sie auf Verknüpfung mit Ihrem Google-Konto aufheben, um alle Berechtigungen und Zugriffstokens zu widerrufen, die dem Projekt gewährt wurden.
Wenn über PCM der gewünschte Dienst nicht angezeigt wird, müssen Sie möglicherweise zuerst einen Aufruf der Geräteliste ausführen.
Kurzübersicht
Mit dieser Referenz können Sie die Schritte zum Autorisieren einesuser und zum Verknüpfen seines Google-Kontos schnell implementieren.
Wenn Sie diese Kurzreferenz verwenden möchten, bearbeiten Sie in den Codebeispielen jede Platzhaltervariable mit den Werten für Ihre spezifische Integration. Kopieren Sie sie und fügen Sie sie nach Bedarf ein:
1 PCM
Öffnen Sie den folgenden Link in einem Webbrowser und ersetzen Sie dabei Folgendes:
- project-id durch Ihre Device Access Project ID
- oauth2-client-id durch die 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 Authentifizierungscode
Sie sollten zu https://www.google.com weitergeleitet werden. Der Autorisierungscode wird in der URL als code
-Parameter zurückgegeben. Er muss das folgende Format haben:
https://www.google.com?code=authorization-code&scope=https://www.googleapis.com/auth/sdm.service
3 Zugriffstokens
Rufen Sie mit dem Autorisierungscode ein Zugriffstoken ab, mit dem Sie die SDM API aufrufen können.
Öffnen Sie ein Terminal und führen Sie den folgenden curl
-Befehl aus. Ersetzen Sie dabei Folgendes:
- oauth2-client-id und oauth2-client-secret durch die OAuth2-Client-ID und den 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.
Anfragen
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 Sie zum ersten Mal devices.list
mit dem neuen Zugriffstoken aufrufen. Dieser erste Aufruf beendet den Autorisierungsprozess und aktiviert Ereignisse, wenn Sie bereits ein Pub/Sub-Abo eingerichtet haben.
Sie müssen einen der für den angegebenen Bereich aufgeführten API-Aufrufe verwenden, um die Autorisierung abzuschließen.
sdm.service
Geräte
Weitere Informationen finden Sie in der API-Referenz zu 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 expires_in
-Parameter angegeben, der von Google OAuth zurückgegeben wird. Falls das Zugriffstoken abläuft, können Sie mit dem Aktualisierungstoken ein neues anfordern.
Öffnen Sie ein Terminal und führen Sie den folgenden curl
-Befehl aus. Ersetzen Sie dabei Folgendes:
- oauth2-client-id und oauth2-client-secret durch die OAuth2-Client-ID und den Clientschlüssel aus Ihren Google Cloud-Anmeldedaten
- refresh-token durch den Code, den Sie beim ersten Abrufen des Zugriffstokens erhalten haben.
Google OAuth gibt ein neues Zugriffstoken zurück.
Anfragen
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" }