如何在 ASP.NET Core 中使用 .AddOpenIdConnect() 从 Google 请求 offline_access?

How to request offline_access from Google using .AddOpenIdConnect() in ASP.NET Core?

我知道 Microsoft 提供了一个 Google-特定的 OIDC 包 (Microsoft.AspNetCore.Authentication.Google),它在 .AddGoogle() 中使用一个选项来指定 AccessType,可以设置为 offline.

但这可以使用标准 ASP.NET 核心 OIDC 包 Microsoft.AspNetCore.Authentication.OpenIdConnect.AddOpenIdConnect() 来完成吗?

使用 Microsoft 帐户,我们可以简单地请求 offline_access 范围,它可以完美运行。但它不适用于 Google 并导致 invalid_scope 错误。

想通了。 Google 使用 access_type 参数进行离线访问请求而不是范围。所以我们可以在OpenIdConnectOptions中处理OnRedirectToIdentityProvider事件添加这个参数:

 options.Events.OnRedirectToIdentityProvider = context =>
 {
   context.ProtocolMessage.SetParameter("access_type", "offline");
   return Task.CompletedTask;
 };