Nachdem Sie Ihre Google Cloud- und Gerätezugriff-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 ein Google-Konto mit Ihrem Device Access Projekt verknüpfen. Verwenden Sie dazu den Partner Connections Manager (PCM). Mit dem PCM kann der user Berechtigungen für gewähren, sodass dieser auf Gebäude- und Gerätedaten zugreifen kann. developer
In dieser Anleitung sind Sie sowohl der user als auch der developer.
Öffnen Sie den folgenden Link in einem Web Browser und ersetzen Sie:
- 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 in letzter Zeit mit mehreren Konten in 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, für die Sie die Autorisierung durchführen möchten Device Access.
- Der Bildschirm Google Nest-Berechtigungen ist der PCM selbst. Hier können Sie Berechtigungen für Gebäude und Geräte 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), und klicken Sie dann auf Weiter.
- Wählen Sie auf dem Bildschirm Konto für Projektname auswählen das Google-Konto aus, das Sie für die SDM API autorisieren möchten. Projektname ist der Name Ihres Google Cloud-Projekts. 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), um fortzufahren. Weitere Informationen finden Sie unter Google hat diese App nicht überprüft.
- Klicken Sie auf dem Bildschirm Berechtigung für Projektname erteilen auf Zulassen, um dem Projekt die Berechtigung für den 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 Parameter
codein der URL zurückgegeben, Er sollte so aussehen: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, das Sie zum Aufrufen der SDM API verwenden können.
Öffnen Sie ein Terminal und führen Sie den folgenden
curlBefehl 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 verwendet, um die SDM API aufzurufen, und das Aktualisierungstoken, um ein neues Zugriffstoken zu erhalten.{"access_token": "access-token","expires_in": 3599,"refresh_token": "refresh-token","scope": "https://www.googleapis.com/auth/sdm.service","token_type": "Bearer" }
Gerätelistenaufruf ausführen
Die Autorisierung ist erst abgeschlossen, wenn Sie
Ihren ersten
devices.list
Aufruf mit Ihrem neuen Zugriffstoken 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 Merkmalen:
{
"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 expires_in Parameter 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 für das Zugriffstoken, nur dass Sie einen anderen grant_type verwenden.
Öffnen Sie ein Terminal und führen Sie den folgenden
curlBefehl 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 Zugriffs tokens 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 funktionieren möglicherweise nach 7 Tagen nicht mehr, wenn die Client-ID nicht genehmigt wurde. Der Ablauf des Tokens nach 7 Tagen hat nichts mit kommerziellen oder Sandbox-Genehmigungen zu tun. Ein Dienst- oder Nutzerkonto muss seine OAuth 2.0-Client-ID genehmigen und in die Produktion überführen lassen, um eine längere Lebensdauer des Tokens zu erhalten. Weitere Informationen finden Sie unter Ablauf des Aktualisierungstokens.
Zugriff verweigert
Wenn Sie den 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 im Bereich Testnutzer in Ihrem OAuth-Zustimmungsbildschirm hinzu.
Fehler im Partner Connections Manager (PCM)
Informationen zu Fehlern beim Zugriff auf den PCM finden Sie in der Referenz zu Fehlern im Partner Connections Manager (PCM).
Google hat diese App nicht überprüft
Die SDM API verwendet einen eingeschränkten Bereich. Das bedeutet, dass alle Apps, die diesen Bereich während der Autorisierung verwenden, als "nicht überprüft" gelten, es sei denn, die OAuth API-Überprüfung wurde abgeschlossen. Bei der Verwendung Device Access für den persönlichen Gebrauch ist die OAuth API-Überprüfung nicht erforderlich.
Während der Autorisierung 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 Zu Projektname (unsicher) klicken.
Weitere Informationen finden Sie unter Bildschirm „Nicht überprüfte App“.
Ungültiger Client
Wenn Sie versuchen, ein Zugriffstoken oder ein Aktualisierungstoken zu erhalten, wird die Fehlermeldung „Ungültiger Client“ angezeigt, wenn Sie einen falschen OAuth 2.0-Clientschlüssel angeben. Achten Sie darauf, dass der
client_secret Wert, den Sie in den Aufrufen für das Zugriffstoken und das Aktualisierungstoken verwenden, der Wert
für die verwendete OAuth 2.0-Client-ID ist. Sie finden ihn auf der
Seite „Google Cloud
Anmeldedaten“.
Ungültige Anfrage, erforderlicher Bereich fehlt
Nachdem Sie Berechtigungen im PCM erteilt haben, wird möglicherweise der Fehler „Ungültige Anfrage“ mit der Meldung „Erforderlicher Parameter fehlt: scope“ angezeigt. Achten Sie darauf, dass der
scope Wert, den Sie in den 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
Während der Autorisierung wird möglicherweise der Fehler „Nicht übereinstimmende Weiterleitungs-URI“ angezeigt. Achten Sie darauf, dass der Wert redirect_uri, den Sie in den 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
Wenn Sie die Berechtigungen ändern möchten, die einem Device Access Projekt erteilt wurden, oder die Verbindung ganz trennen möchten, rufen Sie den PCM auf:
https://nestservices.google.com/partnerconnections
Auf dieser Seite werden alle Dienste (Device Access Projekte) von Drittanbietern 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 aufheben möchten, aktivieren Sie die Berechtigungen, die Sie aufheben möchten, und klicken Sie zum Speichern auf den Pfeil „Zurück“.
Wenn Sie die Verbindung zu einem autorisierten Dienst vollständig trennen möchten, klicken Sie auf Verknüpfung mit Google Konto aufheben, um alle Berechtigungen und Zugriffstokens aufzuheben, die dem Projekt für das Konto erteilt wurden.
Wenn der gewünschte Dienst nicht im PCM angezeigt wird, müssen Sie möglicherweise zuerst einen Gerätelistenaufruf ausführen.
Kurzreferenz
Verwenden Sie diese Referenz, um die Schritte zum Autorisieren eines user und zum Verknüpfen seines Google-Kontos schnell zu implementieren.
Wenn Sie diese Kurzanleitung verwenden möchten, ersetzen Sie jede Platzhaltervariable in den Codebeispielen durch die Werte für Ihre spezifische Integration und kopieren und fügen Sie sie nach Bedarf ein:
1 PCM
Öffnen Sie den folgenden Link in einem Web Browser und ersetzen Sie:
- 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 Autorisierungscode
Sie sollten zu
https://www.google.com weitergeleitet werden. Der Autorisierungscode wird als Parameter code in der URL zurückgegeben,
Er sollte so aussehen:
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, das Sie zum Aufrufen der SDM API verwenden 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
Ihren ersten
devices.list
Aufruf mit Ihrem neuen Zugriffstoken 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 API-Aufrufe verwenden, die für den angegebenen Bereich aufgeführt sind, um die Autorisierung abzuschließen.
sdm.service
Geräte
Weitere Informationen finden Sie in der
devices.list
API-Referenz.
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 expires_in Parameter 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 Zugriffs tokens 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"
}