微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法使用\“ https://accounts.google.com/o/oauth2/v2/auth?access_type=offline启动浏览器

如何解决无法使用\“ 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中实现服务器端身份验证流程的示例。

参考文献

OAuth2 For Web Server Applications

OAuth2 Google Client Libraries .NET

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。