如何解决无法使用\“ 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部分和客户端的
解决方法
注意事项
您正在Web服务器中使用“已安装的应用程序授权”流程。这不是要工作。您将不得不在Web托管应用程序中以不同方式处理授权。
在代码中,这转化为使用GoogleAuthorizationCodeFlow
而不是GoogleWebAuthorizationBroker
来构建Client实例以认证和授权Google API。
已安装的App VS Web应用程序
部署Web应用程序时,您必须首先获取正确的ClientID类型。
Here关于如何认证Web服务器应用程序的详尽指南。
尽管这在每个客户端库中都非常相似,但是here是一个有关如何在.NET Framework中实现服务器端身份验证流程的示例。
参考文献
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。