错误400:使用gmail API(.net)时redirect_uri_mismatch

时间:2020-06-14 22:50:14

标签: c# google-oauth gmail-api google-api-dotnet-client

好吧,所以我试图在此项目上实现Gmail API,我要做的就是发送电子邮件,这就是我到目前为止得到的:

  1. 在Google开发者控制台注册一个新项目,启用gmail API并配置同意屏幕。
  2. 在同意屏幕中,我只是更改了gmail.send的应用名称和范围。

  3. 创建我的凭据作为Web应用,这就是我在重定向uri上所做的。

http://localhost/Home/Index

由于我正在使用MVC,并且想将模板与Home控制器和Index View一起使用,所以我不知道这是否正确,但据我所知,我必须在该页面之后写一个页面身份验证,这是我项目中的唯一页面。

然后我下载 credentials.json 文件并将其添加到我的项目中,然后执行此代码, ruta 是我的路径certificate.json

UserCredential credential;
        using (var stream =
            new FileStream(ruta, FileMode.Open, FileAccess.Read))
        {
            credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                GoogleClientSecrets.Load(stream).Secrets,
                Scopes,
                "user",
                CancellationToken.None).Result;
        }

之后,我执行程序,但是我再也看不到auth页面,而是出现错误:

错误400:redirect_uri_mismatch。。请求中的重定向URI http://127.0.0.1:62297/authorize/与为OAuth客户端授权的重定向URI不匹配。

我尝试将URI添加为“ http://localhost/authorize”和“ http://localhost/authorize/”到我的重定向URI,但是我一直收到相同的错误消息。

我是这个的新手,所以我对所有这些重定向uri感到迷茫,感谢您的回答

1 个答案:

答案 0 :(得分:2)

Google开发者控制台中的重定向uri必须与您发送的重定向uri完全匹配。它基本上告诉Google授权服务器您想要的位置

错误400:redirect_uri_mismatch。请求http://127.0.0.1:62297/authorize/中的重定向URI与为OAuth客户端授权的重定向URI不匹配。

您是从http://127.0.0.1:62297/authorize/发送的,并且尚未在该项目的Google开发人员控制台中添加此端口的装置。凭据返回到。

需要静态端口。

如果端口号正在更改,这是项目中开发环境的问题,则需要将项目设置为使用可以添加到Google开发者控制台的静态端口。

MVC与已安装的应用程序

您在问题中指出您正在使用MVC,GoogleWebAuthorizationBroker.AuthorizeAsync所使用的代码是如何设计用于已安装的应用程序的。当它运行时,它将在正在运行的计算机上启动同意窗口浏览器。这将不适用于Web应用程序,因为它将尝试在其无权访问的服务器上启动浏览器。

代替使用GoogleAuthorizationCodeFlow