Während des Autorisierungsvorgangs kann Google OAuth einen Fehler zurückgeben. In diesem Leitfaden erfahren Sie, wie Sie die häufigsten Fehler bei diesem Vorgang beheben.
Fehlerbehebung
Weitere Informationen zu Google OAuth finden Sie im Hilfeartikel 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. Die Gültigkeitsdauer von sieben Tagen hat nichts mit kommerziellen oder Sandbox-Genehmigungen zu tun. 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.
Zugriff verweigert
Wenn Sie Ihren OAuth-Zustimmungsbildschirm in Google Cloud eingerichtet haben und der Nutzertyp Extern ist, erhalten Sie den Fehler „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 unbedingt im Bereich Testnutzer Ihres OAuth-Zustimmungsbildschirms hinzu.
Fehler beim Partner Connections Manager (PCM)
Informationen 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 bei der Autorisierung verwenden, als „nicht bestätigt“ eingestuft werden, es sei denn, die OAuth API-Bestätigung wurde abgeschlossen. Wenn du Device Access für den privaten Gebrauch verwendest, ist die OAuth API-Bestätigung 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. 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 für nicht bestätigte Apps.
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.
Nicht übereinstimmende Weiterleitungs-URI
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.
Kurzreferenz
In dieser Referenz erfährst du, wie du schnell eineuser autorisieren und ihr Google-Konto verknüpfen kannst.
Bearbeiten Sie dazu jede Platzhaltervariable in den Codebeispielen mit den Werten für Ihre jeweilige Integration und kopieren Sie sie nach Bedarf:
Leite den user auf den PCM-Link in deiner App weiter. Ersetze dabei:
- project-id durch Ihre Device Access Project -ID
- oauth2-client-id mit der OAuth2-Client-ID aus Ihren Google Cloud-Anmeldedaten
- redirect-uri mit einem Weiterleitungs-URI, der für die von Ihnen verwendete OAuth2-Client-ID angegeben ist
- scope mit einem Ihrer verfügbaren Bereiche
https://nestservices.google.com/partnerconnections/project-id /auth?redirect_uri= redirect-uri &access_type=offline& prompt=consent& client_id= oauth2-client-id &response_type=code& scope=https://www.googleapis.com/auth/ scope
Nachdem du über PCM Berechtigungen für den ausgewählten Bereich erteilt hast, sollte die user auf den angegebenen Weiterleitungs-URI weitergeleitet werden. Der Autorisierungscode wird als code
-Parameter in der URL zurückgegeben. Diese sollte folgendes Format haben:
redirect-uri ?code=authorization-code &scope=https://www.googleapis.com/auth/ scope
Verwende den Autorisierungscode, um ein Zugriffstoken abzurufen, mit dem du die SDM API im Namen des Nutzers aufrufen kannst.
Führe einen POST-Aufruf an den OAuth-Endpunkt von Google aus und ersetze dabei Folgendes:
- oauth2-client-id und oauth2-client-secret mit der OAuth2-Client-ID und dem Clientschlüssel aus Ihren Google Cloud-Anmeldedaten
- authorization-code durch den Code, den Sie im vorherigen Schritt erhalten haben
- redirect-uri mit einem Weiterleitungs-URI, der für die von Ihnen verwendete OAuth2-Client-ID angegeben ist
Google OAuth gibt zwei Tokens zurück, ein Zugriffstoken und ein Aktualisierungstoken.
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=redirect-uri '
{"access_token": "
access-token ","expires_in": 3599,
"refresh_token": "
refresh-token ","scope": "https://www.googleapis.com/auth/
scope ","token_type": "Bearer" }
Die Autorisierung ist erst abgeschlossen, wenn du einen API-Aufruf mit dem Zugriffstoken von userausführst. Mit diesem ersten Aufruf wird der Autorisierungsprozess abgeschlossen und Ereignisse werden aktiviert.
Sie müssen einen der für den angegebenen Umfang aufgeführten API-Aufrufe verwenden, um die Autorisierung abzuschließen.
sdm.service
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 '
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 abzurufen.
Führe einen POST-Aufruf an den OAuth-Endpunkt von Google aus und ersetze dabei Folgendes:
- oauth2-client-id und oauth2-client-secret mit der OAuth2-Client-ID und dem Clientschlüssel aus Ihren Google Cloud-Anmeldedaten
- refresh-token mit dem Code, den Sie beim ersten Abrufen des Zugriffstokens erhalten haben.
Google OAuth gibt ein neues Zugriffstoken zurück.
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'
{"access_token": "
new-access-token ","expires_in": 3599,
"scope": "https://www.googleapis.com/auth/
scope ","token_type": "Bearer" }