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" 的新应用程序允许我进行身份验证。