1

Ich versuche, unsere alte Ruhe zu ändern fordert, dass die .net-Client-Bibliotheken und ich habe zwei-ish Fragen/Themen, die ...C# set access_type = offline für AuthorizeAsync?

Die Beispielanwendung auf dieser Seite https://developers.google.com/api-client-library/dotnet/guide/aaa_oauth

verwendet AuthorizeAsync verwendet sind der Benutzer erhalten die Berechtigung genehmigen Sie dann irgendwo die Anmeldeinformationen speichern ....

zu einem späteren Zeitpunkt -. Sie einige offline Zeug, für das tun wollen, hat es die folgenden

UserCredential und AuthorizationCodeFlow kümmern automatisch „erfrischend“ Token, was einfach bedeutet, einen neuen Zugriffstoken zu bekommen. Dies erfolgt mithilfe eines langlebigen Aktualisierungs-Token, das Sie zusammen mit mit dem Zugriffstoken erhalten, wenn Sie während des Autorisierungscode-Ablaufs den access_type = offline-Parameter verwenden.

Ich habe die beiden fett gedruckten Angaben in Frage gestellt.

  1. Wie setzen Sie diesen Parameter mit der C# client lib? AuthorizeAsync akzeptiert kein AccessType-Flag.
  2. Müssen Sie dies (AccessType) sogar einstellen? Ich habe festgestellt, dass nach dem Genehmigen der oauth Bildschirm - ich erhielt sowohl die accessToken und die RefreshToken
  3. Sobald Sie die Aktualisierungstoken haben - und Sie müssen die Anmeldeinformationen aus dem gespeicherten AccessStoken und refreshToken erstellen - müssen Sie das Access-Token manuell aktualisieren? oder wird AuthorizationCodeFlow wirklich darauf achten und muss ich mich an den aktualisierten accessToken erinnern?

Antwort

0
using (var stream = new FileStream("client_secrets.json", FileMode.Open, FileAccess.Read)) 
      { 
       credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
        GoogleClientSecrets.Load(stream).Secrets, 
        new[] { BooksService.Scope.Books }, 
        "user", CancellationToken.None, new FileDataStore("Books.ListMyLibrary")); 
      } 

Das erste, was Sie oben aussehen sollte, ist „user“ das ist, wo Sie verschiedene Benutzer bezeichnen. FileDataStore speichert die Anmeldeinformationen standardmäßig im Ordner% appData% auf Ihrem Computer. Jeder Benutzer verfügt über eine eigene Anmeldeinformationsdatei. Ich habe eine vollständige schreiben auf filedatastore.

Sie müssen sich keine Gedanken darüber machen, ob Sie den Offline-Zugriff aktivieren oder ein neues Zugriffstoken anfordern. Wenn Ihr Gerät abläuft, übernimmt die Client-Bibliothek all dies für Sie.

+0

Danke - ich speichere es in der db - für serverseitige Aufrufe später - so das ist, wo ich GoogleAuthorizationCodeFlow mit den gespeicherten accesstoken + refresetoken verwenden muss; funktioniert es genauso? und sollte ich überprüfen, ob die accesstoken anders ist als das, was ich in der DB habe, um es zu aktualisieren? – zxed

+0

Sie müssen Ihre eigene Implikation von Idatasrore machen und das anstelle von filedatastore verwenden und es wird das gleiche funktionieren – DaImTo

+1

Ich habe ein paar Beispiele auf github sie könnten helfen https://gist.github.com/LindaLawton/a11851d51f13addd70264d01be1928bf – DaImTo