首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gmail API认证?

Gmail API认证?
EN

Stack Overflow用户
提问于 2015-05-26 21:53:21
回答 1查看 481关注 0票数 0

我设置Gmail API凭证的过程如下:

代码语言:javascript
复制
string clientSecret = Settings.ClientSecret;
string clientId = Settings.ClientId;
Task<UserCredential> tCredential;
ClientSecrets clientSecrets = new ClientSecrets {ClientId = clientId, ClientSecret = clientSecret};
tCredential = GoogleWebAuthorizationBroker.AuthorizeAsync(
    clientSecrets,
    Scopes,
    "user",
    CancellationToken.None);
UserCredential credential;
try
{
    credential = tCredential.Result;
}
catch (Exception ex)
{
    throw;
}
_service = new GmailService(new BaseClientService.Initializer()
{
    HttpClientInitializer = credential,
    ApplicationName = "Draft Sender", //applicationName,
});

我没有将凭证设置为保存在任何类型的文件中。但是,当我运行代码时,我只得到一次允许访问电子邮件帐户的提示。初始授权后,后续运行不会生成授权提示。在我尝试更改我正在访问的电子邮件地址之前,这实际上是一件好事。

它的工作方式是我有两个电子邮件地址:个人电子邮件地址和测试电子邮件地址。我让程序正常工作,这样它就可以访问我个人电子邮件地址的内容。然后,我需要开发删除消息的代码,所以我决定切换到一个测试电子邮件地址。

为了使用Gmail API访问电子邮件地址,您必须启用API,并在Google开发人员控制台中为您想要访问的每个电子邮件地址生成‘客户端id’和‘客户端秘密’。我已经为个人电子邮件和测试电子邮件生成了这两个值。

接下来,我更新了代码中的客户id和客户机密,以便我的测试电子邮件成为目标,而不是我的个人电子邮件。

当我将clientId和clientSecret更新到新的电子邮件地址时,我最初得到一个授权提示,但授权提示要求访问旧的电子邮件帐户。我继续授权,只是想看看会发生什么。现在,即使使用更改后的clientId和secret,程序也可以访问原始电子邮件地址。我甚至尝试过更改原始电子邮件地址的密码,但程序仍然可以访问。

我不得不相信有某种类型的文件在存储凭据,因为否则程序如何访问电子邮件收件箱?如何找到此文件或获取此代码以访问不同的电子邮件收件箱?为了绕过自动执行的操作,我是否需要手动创建一个文件?

EN

回答 1

Stack Overflow用户

发布于 2015-05-28 03:52:48

好吧,我能够在没有实际修复的情况下解决这个问题。通过从Gmail API控制台刷新所有涉及的电子邮件地址的密码,我强制身份验证过期。

然后,当我重新授权这个程序时(当我在Visual Studio中运行它时,IE出现了授权提示),我确保将gmail帐户(在右上角列出)更改为我想要授权的电子邮件帐户。

这起作用了;它起作用和第一次没有起作用的事实向我表明,有一些身份验证issues...but,我不知道它们是什么,推测本质上是,嗯,投机,因为我必须确切地知道我做了什么。

如果有人知道发生了什么,我真的很想知道,因为在授予帐户访问权限后,我仍然在更改验证器(作用域)的状态时遇到问题(换句话说:一旦我授予访问权限,访问似乎被锁定在该级别,并且代码中的任何更改选项似乎都不起作用)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30460584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档