GMail API 未正确验证
GMail API Not authenticating properly
我正在关注 Google .Net Quickstart。我已经正确地(我相信)在开发者控制台中设置了应用程序,并在 MVC 控制器中得到了它...
public class HomeController : Controller
{
static string[] Scopes = { GmailService.Scope.GmailReadonly };
static string ApplicationName = "APP NAME";
public ActionResult Index()
{
ViewBag.Title = "Home Page";
Run();
return View();
}
private void Run()
{
UserCredential credential;
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
new ClientSecrets
{
ClientId = "<<MY REAL CLIENT ID IS HERE>>",
ClientSecret = "<<MY REAL CLIENT SECRET IS HERE>>"
},
Scopes,
"<<MY EMAIL ADDRESS>>",
CancellationToken.None, new FileDataStore("Mail.Labels")).Result;
}
}
我每次都在端口 37623 上将项目设置为 运行,并且我在开发人员控制台上设置了客户端以允许重定向到 http://localhost:37623/Home/Index
。
当我 运行 应用程序时,我会提供一个 GMail 帐户列表(我有几个),即使我已经明确说明我想使用哪个帐户。当我单击帐户选择器选择一个帐户时,我立即看到一个错误页面,提示我收到了 400 错误:redirect_uri_mismatch.
如果我查看错误页面上的请求详细信息,它会显示...
access_type=offline
scope=https://www.googleapis.com/auth/gmail.readonly
response_type=code
redirect_uri=http://localhost:41509/authorize/
client_id=<<MY CLIENT ID>>
如您所见,redirect_uri是错误的;它指向端口 41509(在本例中;它随每次调用而改变)。
我错过了什么?什么是我应该做而我没有做的?在 GoogleWebAuthorizationBroker.AuthorizeAsync
的调用中似乎没有设置重定向 URI
我认为这将是一个 10 分钟的练习。 :-(
这似乎是因为我在 Google 开发者控制台中设置的 OAuth 客户端 ID 的应用程序类型被设置为 "Web Application"。删除它并创建一个应用程序类型设置为 "other" 的新应用程序允许我进行身份验证。
我正在关注 Google .Net Quickstart。我已经正确地(我相信)在开发者控制台中设置了应用程序,并在 MVC 控制器中得到了它...
public class HomeController : Controller
{
static string[] Scopes = { GmailService.Scope.GmailReadonly };
static string ApplicationName = "APP NAME";
public ActionResult Index()
{
ViewBag.Title = "Home Page";
Run();
return View();
}
private void Run()
{
UserCredential credential;
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
new ClientSecrets
{
ClientId = "<<MY REAL CLIENT ID IS HERE>>",
ClientSecret = "<<MY REAL CLIENT SECRET IS HERE>>"
},
Scopes,
"<<MY EMAIL ADDRESS>>",
CancellationToken.None, new FileDataStore("Mail.Labels")).Result;
}
}
我每次都在端口 37623 上将项目设置为 运行,并且我在开发人员控制台上设置了客户端以允许重定向到 http://localhost:37623/Home/Index
。
当我 运行 应用程序时,我会提供一个 GMail 帐户列表(我有几个),即使我已经明确说明我想使用哪个帐户。当我单击帐户选择器选择一个帐户时,我立即看到一个错误页面,提示我收到了 400 错误:redirect_uri_mismatch.
如果我查看错误页面上的请求详细信息,它会显示...
access_type=offline
scope=https://www.googleapis.com/auth/gmail.readonly
response_type=code
redirect_uri=http://localhost:41509/authorize/
client_id=<<MY CLIENT ID>>
如您所见,redirect_uri是错误的;它指向端口 41509(在本例中;它随每次调用而改变)。
我错过了什么?什么是我应该做而我没有做的?在 GoogleWebAuthorizationBroker.AuthorizeAsync
我认为这将是一个 10 分钟的练习。 :-(
这似乎是因为我在 Google 开发者控制台中设置的 OAuth 客户端 ID 的应用程序类型被设置为 "Web Application"。删除它并创建一个应用程序类型设置为 "other" 的新应用程序允许我进行身份验证。