Konto autorisieren

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.

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.

  1. Öffnen Sie den folgenden Link in einem Webbrowser und ersetzen Sie dabei Folgendes:

    1. project-id durch Ihre Device Access Project ID
    2. 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. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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
    
  9. Kopieren Sie den Autorisierungscode.

Zugriffstoken anfordern

Rufen Sie mit dem Autorisierungscode ein Zugriffstoken ab, mit dem Sie die SDM API aufrufen können.

  1. Öffnen Sie ein Terminal und führen Sie den folgenden curl-Befehl aus. Ersetzen Sie dabei Folgendes:

    1. oauth2-client-id und oauth2-client-secret durch die OAuth2-Client-ID und den Clientschlüssel aus Ihren Google Cloud-Anmeldedaten
    2. 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'
    
  2. Google OAuth gibt zwei Tokens zurück: ein Zugriffstoken und ein Aktualisierungstoken.

    {
      "access_token": "access-token",
      "expires_in": 3599,
      "refresh_token": "refresh-token",
      "scope": "https://www.googleapis.com/auth/sdm.service",
      "token_type": "Bearer"
    }
    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.

  1. Öffnen Sie ein Terminal und führen Sie den folgenden curl-Befehl aus. Ersetzen Sie dabei Folgendes:

    1. oauth2-client-id und oauth2-client-secret durch die OAuth2-Client-ID und den Clientschlüssel aus Ihren Google Cloud-Anmeldedaten
    2. 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'
    
  2. 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 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:

  1. project-id durch Ihre Device Access Project ID
  2. 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:

  1. oauth2-client-id und oauth2-client-secret durch die OAuth2-Client-ID und den Clientschlüssel aus Ihren Google Cloud-Anmeldedaten
  2. 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:

  1. oauth2-client-id und oauth2-client-secret durch die OAuth2-Client-ID und den Clientschlüssel aus Ihren Google Cloud-Anmeldedaten
  2. 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"
}