GMail API未正确验证

时间:2016-07-12 15:56:28

标签: oauth gmail-api google-authentication

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

1 个答案:

答案 0 :(得分:0)

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