我正在尝试在 asp.net c# 中使用 google API 发送电子邮件并收到错误 400 redirect_uri_mismatch
Posted
技术标签:
【中文标题】我正在尝试在 asp.net c# 中使用 google API 发送电子邮件并收到错误 400 redirect_uri_mismatch【英文标题】:I am trying to send email using google API in asp.net c# and getting Error 400 redirect_uri_mismatch 【发布时间】:2021-01-23 11:16:22 【问题描述】:下面是我的代码:
public void sendemail()
static string[] Scopes = GmailService.Scope.GmailSend;
static string ApplicationName = "GmailAPIWeb";
string CLIENT_ID = "***********************";
string CLIENT_SECRET = "************";
var secrets = new ClientSecrets
ClientId = CLIENT_ID,
ClientSecret = CLIENT_SECRET
;
//Error will throw from here...
var credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
secrets,
Scopes, "user",
CancellationToken.None, null
//new FileDataStore(credPath, true)
).Result;
var service = new GmailService(new BaseClientService.Initializer()
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
);
//Create Message`enter code here`
MailMessage mail = new MailMessage();
mail.Subject = "Subject!";
mail.Body = "This is <b><i>body</i></b> of message";
mail.From = new MailAddress("jayesh@gmail.com");
mail.IsBodyhtml = true;
mail.To.Add(new MailAddress("jayesh@gmail.com"));
MimeKit.MimeMessage mimeMessage =
MimeKit.MimeMessage.CreateFromMailMessage(mail);
var gmailMessage = new Google.Apis.Gmail.v1.Data.Message
Raw = Encode(mimeMessage.ToString())
;
//Send Email
var result = service.Users.Messages.Send(gmailMessage, "me/OR UserId/EmailAddress").Execute();
请求中的重定向 URI http://127.0.0.1:55878/authorize/ 与授权给 OAuth 客户端的重定向 URI 不匹配。要更新授权的重定向 URI,请访问:https://console.developers.google.com/apis/credentials/oauthclient/$your_client_id?project=$your_project_number
我想使用 c# 使用 google api 发送电子邮件。
【问题讨论】:
欢迎来到 *** 看起来这个错误是不言自明的。您是否将重定向添加到 Google? 欢迎加入堆栈,请编辑您的问题并包含您的代码,确保在 Google 开发者控制台中为您的项目添加 127.0.0.1:55878/authorize 作为重定向 uri。 我在 Google 开发者控制台中添加了 localhost:44381/Default.aspx 作为重定向 uri。 GoogleWebAuthorizationBroker.AuthorizeAsync 适用于已安装的应用程序,您需要将 developers.google.com/api-client-library/dotnet/guide/… 用于 Web 应用程序。客户端库使用的重定向 uri 如下127.0.0.1:55878/authorize 您不能将其设置为任何值。您需要将客户端库正在使用的那个添加到谷歌开发者控制台。为什么要将 filedatastore 设置为 null? 我在谷歌搜索文件数据存储为空时收到了评论,所以 【参考方案1】:请求中的重定向 URI http://127.0.0.1:55878/authorize/ 与授权给 OAuth 客户端的重定向 URI 不匹配。要更新授权的重定向 URI,请访问:https://console.developers.google.com/apis/credentials/oauthclient/$your_client_id?project=$your_project_number
就是这个意思。您从应用程序发送的重定向 uri http://127.0.0.1:55878/authorize/
必须与您在 Google 开发者控制台中设置的完全匹配
Web 应用程序与已安装的应用程序。
GoogleWebAuthorizationBroker.AuthorizeAsync
用于已安装的应用程序,旨在在运行代码的机器上打开同意屏幕。如果您想将它托管在网络服务器上,这将不起作用。您需要为 Web 应用程序使用 Web applications (ASP.NET MVC)。
FileDataStore 为空
这真的没关系,因为您不应该使用 GoogleWebAuthorizationBroker.AuthorizeAsync
,通过将 Idatastore 设置为 null 您只是告诉它使用 FileDataStore,这是安装的应用程序客户端将用于存储凭据的默认数据存储
//new FileDataStore(credPath, true)
验证
您可能希望尽早检查您的应用程序的验证,通过 google 验证具有 gmail 范围的应用程序可能需要一段时间,因为它是通过第三方公司完成的,而且非常昂贵。
【讨论】:
我的重定向网址是localhost:44381/authorize.aspx,它显示不同以上是关于我正在尝试在 asp.net c# 中使用 google API 发送电子邮件并收到错误 400 redirect_uri_mismatch的主要内容,如果未能解决你的问题,请参考以下文章