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帐户作为一个存储库的电子邮件,所以我需要有这个授权的事情弄清楚,以便服务器将有访问电子邮件帐户在部署(或容易之后)。在没有中间错误的情况下执行,这并不是真正必要的(但却是期望的)。
是否有一个解决方案(简单或困难)来控制这个缓存过程和处理权限?如果您没有指定存储响应令牌的位置,则将其存储在:
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;