Während der Autorisierung kann Google OAuth einen Fehler zurückgeben. In diesem Leitfaden finden Sie Informationen zur Fehlerbehebung bei den häufigsten Fehlern, die während dieses Prozesses auftreten können.
Fehlerbehebung
Weitere Informationen zu Google OAuth finden Sie unter 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. Das Ablaufen des Tokens nach 7 Tagen hat nichts mit Genehmigungen für kommerzielle Zwecke oder die Sandbox zu tun. Ein Dienst- oder Nutzerkonto muss seine OAuth 2.0-Client-ID genehmigen lassen und in die Produktion überführen, um längere Token-Gültigkeitsdauern zu erhalten. Weitere Informationen finden Sie unter Ablauf von Aktualisierungstokens.
Zugriff verweigert
Wenn Sie Ihren 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 dem Bereich Testnutzer auf Ihrem OAuth-Zustimmungsbildschirm hinzu.
Fehler im Partner Connections Manager (PCM)
Hilfe zu Fehlern, die beim Zugriff auf PCM auftreten, 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 während der Autorisierung verwenden, als „nicht verifiziert“ gekennzeichnet werden, sofern die OAuth API-Überprüfung nicht abgeschlossen ist. Wenn Sie Device Access für den privaten Gebrauch verwenden, ist keine OAuth-API-Überprüfung erforderlich.
Während des Autorisierungsprozesses 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. Dieser Bildschirm kann umgangen werden, indem Sie auf die Option Erweitert und dann auf Weiter zu Projektname (unsicher) klicken.
Ungültiger Client
Wenn Sie versuchen, ein Zugriffs- oder Aktualisierungstoken abzurufen, erhalten Sie den Fehler „Invalid client“, wenn Sie ein falsches OAuth 2.0-Client-Secret angeben. Achten Sie darauf, dass der client_secret
-Wert, den Sie in Zugriffstoken- und Aktualisierungstokenaufrufen verwenden, der Wert für die verwendete OAuth 2.0-Client-ID ist, wie auf der Seite Google Cloud-Anmeldedaten zu sehen 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. 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-URI
Bei der Autorisierung kann der Fehler „Redirect uri mismatch“ (URI für Weiterleitung stimmt nicht überein) 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 festgelegt haben. Sie finden ihn auf der Seite Google Cloud-Anmeldedaten.
Kurzübersicht
Anhand dieser Referenz können Sie die Schritte zum Autorisieren einesuser und zum Verknüpfen des Google-Kontos schnell implementieren.
Wenn Sie diese Kurzübersicht verwenden möchten, bearbeiten Sie jede Platzhaltervariable in den Codebeispielen mit den Werten für Ihre spezifische Integration und kopieren Sie sie nach Bedarf:
1 PCM
Leiten Sie den user zum PCM-Link in Ihrer App weiter und ersetzen Sie:
- project-id durch Ihre Device Access Project ID
- oauth2-client-id durch die OAuth2-Client-ID aus Ihren Google Cloud-Anmeldedaten
- redirect-uri mit einer Weiterleitungs-URI, die für die 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
2 Auth-Code
Nachdem Sie über PCM Berechtigungen für den ausgewählten Bereich erteilt haben, sollte user zu dem von Ihnen angegebenen Weiterleitungs-URI weitergeleitet werden. Der Autorisierungscode wird als code
-Parameter in der URL zurückgegeben, die folgendes Format haben sollte:
redirect-uri?code=authorization-code&scope=https://www.googleapis.com/auth/scope
3. Zugriffstoken
Verwenden Sie den Autorisierungscode, um ein Zugriffstoken abzurufen, mit dem Sie die SDM API im Namen des Nutzers aufrufen können.
Senden Sie eine POST-Anfrage an den OAuth-Endpunkt von Google und ersetzen Sie dabei:
- 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 einer Weiterleitungs-URI, die für die verwendete OAuth2-Client-ID angegeben ist
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=redirect-uri'
Antwort
{"access_token": "access-token",
"expires_in": 3599,
"refresh_token": "refresh-token",
"scope": "https://www.googleapis.com/auth/scope",
"token_type": "Bearer" }
4 API-Aufruf
Die Autorisierung ist erst abgeschlossen, wenn Sie einen API-Aufruf mit dem Zugriffstoken des userausführen. Mit diesem ersten Aufruf wird die Autorisierung abgeschlossen und es werden Ereignisse aktiviert.
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 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 eine Stunde lang gültig, wie im Parameter expires_in
angegeben, der von Google OAuth zurückgegeben wird. Wenn Ihr Zugriffstoken abläuft, verwenden Sie das Aktualisierungstoken, um ein neues zu erhalten.
Senden Sie eine POST-Anfrage an den OAuth-Endpunkt von Google und ersetzen Sie dabei:
- oauth2-client-id und oauth2-client-secret mit der OAuth2-Client-ID und dem Clientschlüssel aus Ihren Google Cloud-Anmeldedaten
- refresh-token durch den 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/scope",
"token_type": "Bearer" }