使用 \"https://accounts.google.com/o/oauth2/v2/auth?access_type=offline 启动浏览器失败
Failed to launch browser with \"https://accounts.google.com/o/oauth2/v2/auth?access_type=offline
我正在使用此代码通过我的网络服务发送电子邮件
string[] Scopes = { GmailService.Scope.GmailSend };
string ApplicationName = "SendMail";
UserCredential credential;
//read credentials file
using (var stream = new FileStream("credentials.json", FileMode.Open, FileAccess.Read))
{
string credPath = "token.json";
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets,
Scopes,
"user",
CancellationToken.None
).Result;
}
string plainText = $"To: user@domain.io\r\n" +
$"Subject: subject\r\n" +
"Content-Type: text/html; charset=utf-8\r\n\r\n" +
$"<h1>test email</h1>";
//call gmail service
var service = new GmailService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});
var newMsg = new Google.Apis.Gmail.v1.Data.Message();
newMsg.Raw = Base64UrlEncode(plainText.ToString());
service.Users.Messages.Send(newMsg, "me").Execute();
它在部署后在本地完全正常工作但抛出此错误
Failed to launch browser with \"https://accounts.google.com/o/oauth2/v2/auth?access_type=offline
即使我在重定向 uri 部分和客户端的
中添加了服务器 url
注意事项
您正在 Web 服务器中使用安装的应用程序授权流程。这不是为了工作。您将不得不在 Web 托管应用程序中以不同方式处理授权。
在代码中,这转化为使用 GoogleAuthorizationCodeFlow
而不是 GoogleWebAuthorizationBroker
构建客户端实例来验证和授权 Google API。
已安装的应用程序与 Web 应用程序
部署 Web 应用程序时,您必须首先获取正确类型的 ClientID。
Here 关于如何验证 Web 服务器应用程序的详尽指南。
尽管这在每个客户端库中都非常相似,here 是一个关于如何在 .NET Framework 中实现服务器端身份验证流程的示例。
参考资料
我正在使用此代码通过我的网络服务发送电子邮件
string[] Scopes = { GmailService.Scope.GmailSend };
string ApplicationName = "SendMail";
UserCredential credential;
//read credentials file
using (var stream = new FileStream("credentials.json", FileMode.Open, FileAccess.Read))
{
string credPath = "token.json";
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets,
Scopes,
"user",
CancellationToken.None
).Result;
}
string plainText = $"To: user@domain.io\r\n" +
$"Subject: subject\r\n" +
"Content-Type: text/html; charset=utf-8\r\n\r\n" +
$"<h1>test email</h1>";
//call gmail service
var service = new GmailService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});
var newMsg = new Google.Apis.Gmail.v1.Data.Message();
newMsg.Raw = Base64UrlEncode(plainText.ToString());
service.Users.Messages.Send(newMsg, "me").Execute();
它在部署后在本地完全正常工作但抛出此错误
Failed to launch browser with \"https://accounts.google.com/o/oauth2/v2/auth?access_type=offline
即使我在重定向 uri 部分和客户端的
注意事项
您正在 Web 服务器中使用安装的应用程序授权流程。这不是为了工作。您将不得不在 Web 托管应用程序中以不同方式处理授权。
在代码中,这转化为使用 GoogleAuthorizationCodeFlow
而不是 GoogleWebAuthorizationBroker
构建客户端实例来验证和授权 Google API。
已安装的应用程序与 Web 应用程序
部署 Web 应用程序时,您必须首先获取正确类型的 ClientID。
Here 关于如何验证 Web 服务器应用程序的详尽指南。
尽管这在每个客户端库中都非常相似,here 是一个关于如何在 .NET Framework 中实现服务器端身份验证流程的示例。