Ich habe meine benutzerdefinierte IDataStore
implementiert, damit ich Endbenutzertoken in meiner Datenbank anstelle der Standardimplementierung speichern kann, die auf Dateisystem
Controller
%Vor%Das Problem tritt beim Redirect-Ereignis auf. Nach dieser ersten Weiterleitung funktioniert es gut.
Ich habe herausgefunden, dass beim Redirect-Event etwas anders ist. Beim Redirect-Ereignis ist T
keine Token-Antwort, sondern eine Zeichenfolge. Außerdem wird dem Schlüssel "oauth _" vorangestellt.
Ich nehme also an, dass ich ein anderes Ergebnis auf der Weiterleitung zurückgeben sollte, aber ich habe keine Ahnung, was ich zurückgeben soll.
Der Fehler, den ich bekomme, ist: Google.Apis.Auth.OAuth2.Responses.TokenResponseException: Fehler: "State is invalid", Beschreibung: "", Uri: ""
Google-Quellcode-Referenz Ссылка
Danke für Ihre Hilfe
Ich bin mir nicht ganz sicher, warum deine nicht funktioniert, aber das ist eine Kopie des Codes, den ich benutze. Die vollständige Klasse finden Sie hier DatabaseDatastore.cs
%Vor% Die API speichert (mindestens) zwei Werte in Ihrem IDataStore
. So sieht der Autorisierungsprozess aus der Sicht eines leeren IDataStore aus (notieren Sie, welche Zeilen einen Wert festlegen und welche Zeilen einen Wert erhalten):
Zuerst versucht die API, ein gespeichertes access_token
zu finden, aber es gibt keines im Datenspeicher (das nur null
zurückgibt), und die API startet den Autorisierungsprozess. Der Schlüssel "oauth _..." ist eine Zustandsinformation, die die API während dieses Prozesses benötigt, und wird normalerweise vor dem Abrufen festgelegt (nach meiner Erfahrung).
Wenn Ihr IDataStore
jedoch nie einen Wert mit einem "oauth_ .." Schlüssel erhalten hat und somit nichts zurückgeben kann, geben Sie einfach null
zurück, und die API sollte bei Bedarf ein neues erstellen.
Tags und Links asp.net-mvc c# google-api oauth-2.0 google-oauth