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 über das PCM ein Google-Konto mit IhremDevice Access -Projekt verknüpfen. Mit PCM kann die user developers die Berechtigung erteilen, auf ihre Gebäude- und Gerätedaten zuzugreifen.

In diesem Leitfaden sind Sie sowohl die user als auch die developer.

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

    1. project-id durch Ihre Device Access Project -ID
    2. 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. 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 selbst. Hier können Sie Gebäude- und Geräteberechtigungen gewähren. 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. Wählen Sie auf dem Bildschirm Choose an account to continue to Project Name (Konto auswählen, um mit Project Name fortzufahren), wobei Project Name 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.
  5. Nachdem Sie ein Konto ausgewählt haben, wird möglicherweise ein Warnbildschirm mit der Meldung Diese App wurde von Google nicht überprüft angezeigt. Klicken Sie in diesem Fall auf die Option Erweitert und dann auf Zu 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 dem Projekt die Berechtigung zum Zugriff auf Ihr Google-Konto zu erteilen.
  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. Dieser 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. Öffnen Sie ein Terminal und führen Sie den folgenden curl-Befehl aus. Ersetzen Sie dabei:

    1. oauth2-client-id und oauth2-client-secret mit der OAuth2-Client-ID und dem 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 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 beide Werte. Mit dem Zugriffstoken wird die SDM API und das Aktualisierungstoken wird verwendet, um eine neue ein Zugriffstoken hinzufügen.

Gerätelistenanruf 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 Aufruf wird eine Liste der Geräte zurückgegeben, die mit Ihrem Device Access-Projekt verknüpft sind. Für jedes Gerät ist eine eigene Liste der verfügbaren Merkmale verfügbar:

{
  "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 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 für das Zugriffstoken, mit der Ausnahme, dass du eine andere grant_type verwendest.

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

    1. oauth2-client-id und oauth2-client-secret mit der OAuth2-Client-ID und dem Clientschlüssel aus Ihren Google Cloud-Anmeldedaten
    2. refresh-token mit dem 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 OAuth 2.0 für den Zugriff auf Google verwenden APIs

Aktualisierungstoken läuft immer wieder ab

Aktualisierungstokens können nach 7 Tagen nicht mehr funktionieren, wenn die Client-ID nicht genehmigt wurde. Der Ablauf des 7-Tage-Tokens hat nichts mit dem kommerziellen Angebot zu tun oder Sandbox-Genehmigungen. Die OAuth 2.0-Client-ID eines Dienstes oder Nutzerkontos muss genehmigt und in Produktion genommen werden, um eine längere Tokengültigkeit zu erhalten. 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 zu erstellen, 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.

Während des Autorisierungsvorgangs wird möglicherweise der Bildschirm „Diese App wurde von Google nicht überprüft“ angezeigt. Das ist der Fall, wenn der Bereich sdm.service nicht auf dem OAuth-Zustimmungsbildschirm in Google Cloud konfiguriert ist. 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

Wenn Sie versuchen, ein Zugriffs- oder Aktualisierungstoken abzurufen, erhalten Sie den Fehler „Ungültiger Client“, wenn Sie ein falsches OAuth 2.0-Client-Secret angeben. Der Wert für client_secret, den Sie in Aufrufen von Zugriffs- und Aktualisierungstokens verwenden, muss mit dem Wert für die verwendete OAuth 2.0-Client-ID übereinstimmen, der auf der Seite Google Cloud-Anmeldedaten zu finden ist.

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. Der Wert für scope, den Sie in Autorisierungsaufrufen verwenden, muss mit dem Wert übereinstimmen, den Sie für den OAuth 2.0-Client auf der Seite Google Cloud-Anmeldedaten festgelegt haben.

Weiterleitungs-URI stimmt nicht überein

Bei der Autorisierung kann der Fehler „Redirect URI mismatch“ (Weiterleitungs-URI stimmt nicht überein) auftreten. Der Wert für redirect_uri, den Sie in Autorisierungsanrufen verwenden, muss mit dem Wert übereinstimmen, den Sie für den OAuth 2.0-Client auf der Seite Google Cloud-Anmeldedaten festgelegt haben.

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 Drittanbieterdienste (Device Access Projekte) angezeigt, 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.

Wenn Sie die Verknüpfung eines autorisierten Dienstes vollständig aufheben möchten, klicken Sie auf Verknüpfung mit Ihrem Google-Konto aufheben, um alle Berechtigungen und Zugriffstokens zu widerrufen, die dem Projekt 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

In dieser Referenz erfährst du, wie du schnell eineuser autorisieren und ihr Google-Konto verknüpfen kannst.

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. Ersetzen Sie dabei:

  1. project-id durch Ihre 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. Authentifizierungscode

Sie werden zu https://www.google.com weitergeleitet. Der Autorisierungscode wird als Parameter code in der URL zurückgegeben. Diese muss folgendermaßen formatiert sein:

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 mit denen Sie die SDM API aufrufen 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 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 du deinen ersten devices.list-Aufruf mit deinem neuen Zugriffstoken getätigt hast. Mit diesem ersten Aufruf wird der Autorisierungsvorgang abgeschlossen und Ereignisse werden aktiviert, wenn Sie bereits ein Pub/Sub-Abo eingerichtet haben.

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 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 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 abzurufen.

Ö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 mit dem 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"
}