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 Strukturen und Geräte aufrufen möchten, müssen Sie ein Google-Konto über das PCM mit IhremDevice Access -Projekt verknüpfen. Mit PCM kann der user Berechtigungen erteilen, damit developerauf seine Gebäude- und Gerätedaten zugreifen können.
In diesem Leitfaden sind Sie sowohl der user als auch der developer.
Öffnen Sie den folgenden Link in einem Webbrowser und ersetzen Sie:
- 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 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 selbst. Hier können Sie Berechtigungen für Gebäude und Geräte erteilen. Aktiviere die Berechtigungen für dein Zuhause (Schritt 1) und alle Geräte in diesem Zuhause, die von der SDM API unterstützt werden (Schritt 2), und klicke dann auf Weiter.
- Wählen Sie auf dem Bildschirm Konto auswählen, um mit Projektname fortzufahren, wobei Projektname 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 Google hat diese App nicht überprüft angezeigt. Klicken Sie in diesem Fall auf die Option Erweitert und dann auf Zu Projektname (unsicher). Weitere Informationen
- Klicken Sie auf dem Bildschirm Berechtigung für Projektname erteilen 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 Berechtigungen, die Sie erteilen möchten, ausgewählt sind, und klicken Sie zur Bestätigung auf Zulassen.
Sie sollten zu https://www.google.com weitergeleitet werden. Der Autorisierungscode wird als
code-Parameter in der URL zurückgegeben, die so aussehen sollte: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, um ein Zugriffstoken abzurufen, 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:- 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. Das Zugriffstoken wird zum Aufrufen der SDM API verwendet und das Aktualisierungstoken zum Abrufen eines neuen Zugriffstokens.{"access_token": "access-token","expires_in": 3599,"refresh_token": "refresh-token","scope": "https://www.googleapis.com/auth/sdm.service","token_type": "Bearer" }
Gerätelistenaufruf durchführen
Die Autorisierung ist erst abgeschlossen, wenn Sie mit Ihrem neuen Zugriffstoken den ersten devices.list-Aufruf ausführen. Mit diesem ersten Aufruf wird der Autorisierungsprozess 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. Jedes Gerät hat eine eigene Liste mit verfügbaren Attributen:
{
"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 Parameter expires_in angegeben, der von Google OAuth zurückgegeben wird. Wenn Ihr Zugriffstoken abläuft, verwenden Sie das Aktualisierungstoken, um ein neues zu erhalten.
Der Befehl ähnelt dem Befehl für das Zugriffstoken, nur dass Sie eine andere grant_type verwenden.
Öffnen Sie ein Terminal und führen Sie den folgenden
curl-Befehl aus. Ersetzen Sie dabei:- 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.
{"access_token": "new-access-token","expires_in": 3599,"scope": "https://www.googleapis.com/auth/sdm.service","token_type": "Bearer" }
Fehlerbehebung
Weitere Informationen zu Google OAuth finden Sie unter 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. Das Ablaufen des Tokens nach 7 Tagen hat nichts mit Genehmigungen für kommerzielle Zwecke oder die Sandbox zu tun. Ein Dienst- oder Nutzerkonto muss seine OAuth 2.0-Client-ID genehmigen lassen und in die Produktion überführen, um längere Token-Gültigkeitsdauern zu erhalten. Weitere Informationen finden Sie unter Ablauf von Aktualisierungstokens.
Zugriff verweigert
Wenn Sie Ihren OAuth-Zustimmungsbildschirm in Google Cloud eingerichtet haben und der Nutzertyp auf Extern festgelegt ist, erhalten Sie die Fehlermeldung „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 dem Bereich Testnutzer auf Ihrem OAuth-Zustimmungsbildschirm hinzu.
Fehler im Partner Connections Manager (PCM)
Hilfe 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 während der Autorisierung verwenden, als „nicht verifiziert“ gekennzeichnet werden, sofern die OAuth API-Überprüfung nicht abgeschlossen ist. Wenn Sie Device Access für den privaten Gebrauch verwenden, ist keine OAuth-API-Überprüfung erforderlich.
Während des Autorisierungsprozesses wird möglicherweise der Bildschirm „Google hat diese App nicht überprüft“ angezeigt. Das passiert, wenn der Bereich sdm.service nicht auf Ihrem OAuth-Zustimmungsbildschirm in Google Cloud konfiguriert ist. Sie können diesen Bildschirm umgehen, indem Sie auf die Option Erweitert und dann auf Weiter zu Projektname (unsicher) klicken.
Ungültiger Client
Wenn Sie versuchen, ein Zugriffs- oder Aktualisierungstoken abzurufen, erhalten Sie den Fehler „Invalid client“, wenn Sie ein falsches OAuth 2.0-Client-Secret angeben. Achten Sie darauf, dass der client_secret-Wert, den Sie in Zugriffstoken- und Aktualisierungstokenaufrufen verwenden, der Wert für die verwendete OAuth 2.0-Client-ID ist, wie auf der Seite Google Cloud-Anmeldedaten zu sehen.
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. 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 festgelegt haben. Sie finden ihn auf der Seite Google Cloud-Anmeldedaten.
Nicht übereinstimmende Weiterleitungs-URI
Bei der Autorisierung kann der Fehler „Redirect uri mismatch“ 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 festgelegt haben. Sie finden ihn auf der Seite Google Cloud-Anmeldedaten.
Kontoberechtigungen ändern
So ändern Sie die Berechtigungen, die einem Device Access Projekt gewährt wurden, oder trennen es vollständig:
https://nestservices.google.com/partnerconnections
Auf dieser Seite werden alle Drittanbieterdienste für Entwickler (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.
So widerrufen Sie nur bestimmte Berechtigungen für einen autorisierten Dienst: Deaktivieren Sie die Berechtigungen, die Sie widerrufen möchten, und klicken Sie auf den Zurück-Pfeil, um die Änderungen zu speichern.
Wenn Sie die Verbindung zu einem autorisierten Dienst vollständig trennen möchten, klicken Sie auf Verknüpfung Ihres Google-Kontos aufheben, um alle Berechtigungen und Zugriffstokens zu widerrufen, die dem Projekt für das Konto gewährt wurden.
Wenn der gewünschte Dienst nicht in PCM angezeigt wird, müssen Sie möglicherweise zuerst einen Geräteaufruf durchführen.
Kurzübersicht
Anhand dieser Referenz können Sie die Schritte zur Autorisierung einesuser und zur Verknüpfung seines Google-Kontos schnell implementieren.
Wenn Sie diese Kurzübersicht verwenden möchten, bearbeiten Sie jede Platzhaltervariable in den Codebeispielen mit den Werten für Ihre spezifische Integration und kopieren Sie sie nach Bedarf:
1 PCM
Öffnen Sie den folgenden Link in einem Webbrowser und ersetzen Sie:
- 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 Auth-Code
Sie sollten zu https://www.google.com weitergeleitet werden. Der Autorisierungscode wird als code-Parameter in der URL zurückgegeben, die so aussehen sollte:
https://www.google.com?code=authorization-code&scope=https://www.googleapis.com/auth/sdm.service
3. Zugriffstoken
Verwenden Sie den Autorisierungscode, um ein Zugriffstoken abzurufen, 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:
- 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.
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 Sie mit Ihrem neuen Zugriffstoken den ersten devices.list-Aufruf ausführen. Mit diesem ersten Aufruf wird der Autorisierungsprozess abgeschlossen und Ereignisse werden aktiviert, 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 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 Parameter expires_in angegeben, der von Google OAuth zurückgegeben wird. 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 aus. Ersetzen Sie dabei:
- 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.
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"
}