【问题标题】:GMail API Not authenticating properlyGMail API 未正确验证
【发布时间】:2016-07-12 15:56:28
【问题描述】:

我正在关注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 分钟的练习。 :-(

【问题讨论】:

    标签: oauth gmail-api google-authentication


    【解决方案1】:

    这似乎是因为我在 Google Developer Console 中设置的 OAuth Client ID 的应用程序类型设置为“Web 应用程序”。删除它并创建一个新的应用程序类型设置为“其他”允许我进行身份验证。

    【讨论】:

      猜你喜欢
      • 2016-11-12
      • 1970-01-01
      • 2014-01-08
      • 2021-08-25
      • 2020-08-31
      • 1970-01-01
      • 1970-01-01
      • 2023-02-04
      • 1970-01-01
      相关资源
      最近更新 更多