Gmail API:强制授权重新提示用户

本文关键字:提示 用户 新提示 权重 API 授权 Gmail | 更新日期: 2023-09-27 17:53:42

授权访问gmailAPI的凭据似乎被缓存了。当我更改客户端ID和秘密以及电子邮件地址时,没有任何变化。而且,当我改变作用域时,没有任何变化。我正在尝试强制刷新凭据。是否有一种方法可以强制凭据重新提示用户?

有我可以找到并删除的文件吗?

我使用c#和gmail api包从nuget。验证的代码是:

 _emailAddress = Settings.EmailAddress;
string clientSecret = Settings.ClientSecret;
string clientId = Settings.ClientId;
ClientSecrets clientSecrets = new ClientSecrets {ClientId = clientId, ClientSecret = clientSecret};
UserCredential credential;
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
    clientSecrets,
    Scopes,
    "user",
    CancellationToken.None).Result;
_service = new GmailService(new BaseClientService.Initializer()
{
   HttpClientInitializer = credential,
   ApplicationName = "Draft Sender", //applicationName,
});

而且,一旦我建立了凭据,我的范围就被设置了:除非我删除并更新secret和clientID,否则不能更改范围。此外,它需要两次运行才能生成凭据,第一次导致错误,第二次导致提示授权。

我很确定这是发生的,因为凭据缓存在某处,不知何故,即使我没有指定任何存储…但我不确定。无论哪种方式,这个问题似乎取决于gmail api包内的代码,但我很难找到我正在处理的解决方案。

最终,我需要部署一个功能到一个ASP网站,将访问gmail帐户作为一个存储库的电子邮件,所以我需要有这个授权的事情弄清楚,以便服务器将有访问电子邮件帐户在部署(或容易之后)。在没有中间错误的情况下执行,这并不是真正必要的(但却是期望的)。

是否有一个解决方案(简单或困难)来控制这个缓存过程和处理权限?

Gmail API:强制授权重新提示用户

如果您没有指定存储响应令牌的位置,则将其存储在:

C: ' '‘用户’' AppData '漫游用户' Google.Apis.Auth

如果你想指定目录,看下面这个:(注意:你只需要在你的项目中创建目录App_Data)

string path = HostingEnvironment.MapPath("~/App_Data");    
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                         new ClientSecrets
                         {
                             ClientId = "Client_ID",
                             ClientSecret = "Secret_Client"
                         },
                         Scopes,
                         "me",
                         CancellationToken.None,
                         new FileDataStore(path)
                         ).Result;