Konto autorisieren

Mit Ihren Google Cloud- und Gerätezugriff-Projekten ein Google-Konto mit einem unterstützten Google Nest-Gerät für die SDM API

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.

  1. Den folgenden Link in einem Web öffnen Browser. Ersetzen Sie dabei:

    1. project-id durch deine Device Access Project ID
    2. 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. 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.
  3. 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.
  4. 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.
  5. 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.
  6. Klicken Sie auf dem Bildschirm Berechtigung Projektname gewähren auf Zulassen, um Projektberechtigung für den Zugriff auf Ihr Google-Konto.
  7. Prüfen Sie auf dem Bildschirm Auswahl bestätigen, ob die gewünschten Berechtigungen aktiviert sind, und klicken Sie zur Bestätigung auf Zulassen.
  8. 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
    
  9. Kopieren Sie den Autorisierungscode.

Zugriffstoken anfordern

Verwenden Sie den Autorisierungscode zum Abrufen eines Zugriffstokens, das mit denen Sie die SDM API aufrufen können.

  1. Terminal öffnen und ausführen den folgenden curl-Befehl und ersetzen Sie dabei:

    1. oauth2-client-id und oauth2-client-secret mit der OAuth2-Client-ID und dem Clientschlüssel aus deinem 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 Token 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 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

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

    1. oauth2-client-id und oauth2-client-secret mit der OAuth2-Client-ID und dem Clientschlüssel aus deinem Google Cloud Anmeldedaten
    2. 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'
    
  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 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, kann es passieren, dass „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:

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

  1. oauth2-client-id und oauth2-client-secret mit der OAuth2-Client-ID und dem Clientschlüssel aus deinem Google Cloud Anmeldedaten
  2. 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:

  1. oauth2-client-id und oauth2-client-secret mit der OAuth2-Client-ID und dem Clientschlüssel aus deinem Google Cloud Anmeldedaten
  2. 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"
}