错误 400:redirect_uri_mismatch 使用 gmail api (.net)
Error 400: redirect_uri_mismatch when using gmail api (.net)
好的,所以我正在尝试在这个项目上实现 Gmail API,我想做的就是发送电子邮件,这就是我目前得到的结果:
- 在 google 开发者控制台注册一个新项目,启用 gmail API 并配置同意屏幕。
在同意屏幕中,我刚刚更改了 gmail.send 的应用程序名称和范围。
将我的凭据创建为 webapp,这就是我在重定向 uris 上放置的内容。
因为我正在使用 MVC 并希望将模板与主控制器和索引视图一起使用,所以我不知道这是否正确,但据我所知,我必须将页面写在它应该去的地方身份验证后,这是我项目中的唯一页面。
然后我下载credentials.json文件并添加到我的项目中,然后执行这段代码,ruta 是我的 credentials.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;
}
之后我执行了程序,但我从未看到授权页面,而是出现了错误:
Error 400: redirect_uri_mismatch. The redirect URI in the request, http://127.0.0.1:62297/authorize/, does not match the ones authorized for the OAuth client.
我尝试将该 URI 作为“http://localhost/authorize" and "http://localhost/authorize/”添加到我的重定向 URI,但我不断收到相同的错误消息。
我是新手,所以我对所有这些重定向 uris 有点迷茫,感谢您的回答
google 开发者控制台中的重定向 uri 必须与您发送的控制台完全匹配。它基本上告诉 Google 的授权服务器你想要
Error 400: redirect_uri_mismatch. The redirect URI in the request, http://127.0.0.1:62297/authorize/, does not match the ones authorized for the OAuth client.
意味着您正在从 http://127.0.0.1:62297/authorize/ 发送并且尚未在您的 google 开发者控制台中为该项目添加此端口。凭据返回到。
显示如何解决此问题的视频:How the fix redirect_uri_mismatch error. Part 2
需要静态端口。
如果端口号发生变化,这是您项目开发环境的问题,您需要将项目设置为使用静态端口,您可以将其添加到 Google 开发者控制台。
MVC 与安装的应用程序
您在问题中声明您正在使用 MVC,但您使用的代码 GoogleWebAuthorizationBroker.AuthorizeAsync
是如何设计用于已安装的应用程序的。当它运行时,它将在 运行 关闭的机器上启动同意 window 浏览器。这不适用于 Web 应用程序,因为它会尝试在服务器上启动它无权访问的浏览器。
这是对我有用的例子。 Authorised JavaScript origins: 127.0.0.1
Authorised redirect URIs: 127.0.0.1/oauth/complete/google-oauth2
我们不应该在 main url 之后使用任何端口号。删除端口号。就这样。
转到此处并更正重定向 urls: `
https://console.cloud.google.com/apis/credentials/oauthclient/
`
好的,所以我正在尝试在这个项目上实现 Gmail API,我想做的就是发送电子邮件,这就是我目前得到的结果:
- 在 google 开发者控制台注册一个新项目,启用 gmail API 并配置同意屏幕。
在同意屏幕中,我刚刚更改了 gmail.send 的应用程序名称和范围。
将我的凭据创建为 webapp,这就是我在重定向 uris 上放置的内容。
因为我正在使用 MVC 并希望将模板与主控制器和索引视图一起使用,所以我不知道这是否正确,但据我所知,我必须将页面写在它应该去的地方身份验证后,这是我项目中的唯一页面。
然后我下载credentials.json文件并添加到我的项目中,然后执行这段代码,ruta 是我的 credentials.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;
}
之后我执行了程序,但我从未看到授权页面,而是出现了错误:
Error 400: redirect_uri_mismatch. The redirect URI in the request, http://127.0.0.1:62297/authorize/, does not match the ones authorized for the OAuth client.
我尝试将该 URI 作为“http://localhost/authorize" and "http://localhost/authorize/”添加到我的重定向 URI,但我不断收到相同的错误消息。
我是新手,所以我对所有这些重定向 uris 有点迷茫,感谢您的回答
google 开发者控制台中的重定向 uri 必须与您发送的控制台完全匹配。它基本上告诉 Google 的授权服务器你想要
Error 400: redirect_uri_mismatch. The redirect URI in the request, http://127.0.0.1:62297/authorize/, does not match the ones authorized for the OAuth client.
意味着您正在从 http://127.0.0.1:62297/authorize/ 发送并且尚未在您的 google 开发者控制台中为该项目添加此端口。凭据返回到。
显示如何解决此问题的视频:How the fix redirect_uri_mismatch error. Part 2
需要静态端口。
如果端口号发生变化,这是您项目开发环境的问题,您需要将项目设置为使用静态端口,您可以将其添加到 Google 开发者控制台。
MVC 与安装的应用程序
您在问题中声明您正在使用 MVC,但您使用的代码 GoogleWebAuthorizationBroker.AuthorizeAsync
是如何设计用于已安装的应用程序的。当它运行时,它将在 运行 关闭的机器上启动同意 window 浏览器。这不适用于 Web 应用程序,因为它会尝试在服务器上启动它无权访问的浏览器。
这是对我有用的例子。 Authorised JavaScript origins: 127.0.0.1
Authorised redirect URIs: 127.0.0.1/oauth/complete/google-oauth2
我们不应该在 main url 之后使用任何端口号。删除端口号。就这样。
转到此处并更正重定向 urls: `
https://console.cloud.google.com/apis/credentials/oauthclient/
`