Während des Autorisierungsvorgangs gibt Google OAuth möglicherweise einen Fehler zurück. In diesem Leitfaden erfahren Sie, wie Sie die häufigsten Fehler bei diesem Vorgang beheben.
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. 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.
PCM-Fehler (Partner Connections Manager)
Informationen zu Fehlern, die beim Zugriff auf PCM auftreten, finden Sie in der PCM-Fehlerreferenz (Partner Connections Manager).
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 der Autorisierung wird möglicherweise der Bildschirm „Google hat diese Anwendung nicht überprüft“ angezeigt. Dieser Bildschirm wird angezeigt, wenn in Ihrem OAuth-Zustimmungsbildschirm in Google Cloud nicht der Bereich sdm.service
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. Achten Sie darauf, dass der client_secret
-Wert, den Sie in Zugriffs- und Aktualisierungstokenaufrufen verwenden, dem Wert für die verwendete OAuth 2.0-Client-ID entspricht. Diese finden Sie auf der Seite Google Cloud-Anmeldedaten.
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 redirect_uri
, 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.
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:
1 PCM
Leite den user auf den PCM-Link in deiner App weiter. Ersetze dabei:
- project-id durch deine Device Access Project ID
- oauth2-client-id mit der OAuth2-Client-ID aus Ihren Google Cloud-Anmeldedaten
- redirect-uri mit einer Weiterleitungs-URI, die 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
2. Autorisierungscode
Nachdem du über PCM Berechtigungen für den ausgewählten Bereich erteilt hast, sollte die user zum angegebenen Weiterleitungs-URI weitergeleitet werden. Der Autorisierungscode wird als code
-Parameter in der URL zurückgegeben und sollte folgendes Format haben:
redirect-uri?code=authorization-code&scope=https://www.googleapis.com/auth/scope
3. Zugriffstoken
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 durch die OAuth2-Client-ID und den 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 von Ihnen verwendete OAuth2-Client-ID angegeben ist
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=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 von userausführen. 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
Geräte
Weitere Informationen finden Sie in der API-Referenz 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 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 durch die OAuth2-Client-ID und den 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.
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" }