C# set access_type = AuthorizeAsync 离线?

C# set access_type = offline for AuthorizeAsync?

我正在尝试更改我们对 .net 客户端库的旧 rest 调用,我有两个 questions/issues 是相关的...

此页面上的示例应用程序 https://developers.google.com/api-client-library/dotnet/guide/aaa_oauth

使用 AuthorizeAsync 让用户批准授权,然后将凭据保存在某处....

稍后 - 你想做一些离线 东西,为此,它有以下内容

UserCredential and AuthorizationCodeFlow take care of automatically "refreshing" the token, which simply means getting a new access token. This is done using a long-lived refresh token, which you receive along with the access token if you use the access_type=offline parameter during the authorization code flow.

我已将有问题的两个语句标记为粗体。

  1. 如何使用 c# 客户端库设置此参数? AuthorizeAsync 不接受 accessType 标志。
  2. 你还需要设置这个(AccessType)吗?我注意到在批准 oauth 屏幕后 - 我收到了 accessToken 和 RefreshToken
  3. 获得刷新令牌后 - 您需要从保存的访问令牌和刷新令牌构建凭据 - 您是否需要手动刷新访问令牌?或者 AuthorizationCodeFlow 真的会处理这个问题吗?我需要记住刷新的 accessToken 吗?
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"));
            }

你应该在上面看到的第一件事是 "user" 这是你表示不同用户的地方。 FileDataStore 默认将凭据存储在您计算机上的 %appData% 文件夹中,每个用户都有自己的凭据文件。我在 filedatastore.

上写了一篇完整的文章

您无需担心将其设置为离线访问或在您的访问令牌过期时请求新的访问令牌,客户端库将为您处理所有这些。