我使用ASP .Net Core 2和Google身份验证。我需要更新电子邮件签名(gmail)。但我不知道如何获取Google Credential(验证后)。
我的url端口有问题,一直生成另一个端口 - 例如:localhost:4550,另一次localhost:3568(我无法在Google Console中解锁正确的URL,因为那样)。我尝试了这个:stackoverflow.com/questions/31209273 / ...但在我的服务器中,当我点击按钮时,不要打开弹出窗口,
services.AddAuthentication().AddGoogle(googleOptions =>
{
googleOptions.ClientId = googleClientId;
googleOptions.ClientSecret = googleClientSecret;
});
我也在试用这段代码:
UserCredential cred = await GoogleWebAuthorizationBroker.AuthorizeAsync(
new ClientSecrets
{
ClientId = _applicationSettings.GoogleClientId,
ClientSecret = _applicationSettings.GoogleClientSecret
},
scopes,
"me",
CancellationToken.None,
new FileDataStore("Analytics.Auth.Store"));
但我有另外一个问题,这段代码不起作用。有人知道如何实现这个?感谢。
答案 0 :(得分:0)
Google .net客户端库目前不支持使用Asp .Net核心进行身份验证。你正在使用的代码
UserCredential cred = await GoogleWebAuthorizationBroker.AuthorizeAsync(
new ClientSecrets
{
ClientId = _applicationSettings.GoogleClientId,
ClientSecret = _applicationSettings.GoogleClientSecret
},
scopes,
"me",
CancellationToken.None,
new FileDataStore("Analytics.Auth.Store"));
用于对安装的应用程序进行身份验证,例如在运行代码的计算机上打开浏览器窗口的控制台应用程序。对于Web应用程序,身份验证需要在客户端计算机上打开浏览器身份验证窗口。目前无法使用.Net客户端库执行此操作。
答案 1 :(得分:0)
“Google .net客户端库目前不支持Asp .net Core。”
然后,我使用aspcore身份验证与Google服务,以及一些权限:
services.AddAuthentication(options =>
{
options.DefaultScheme = IdentityConstants.ApplicationScheme;
})
.AddGoogle("Google", options =>
{
options.AccessType = "offline";
options.ClientId = googleClientId;
options.ClientSecret = googleClientSecret;
options.SaveTokens = true;
options.Scope.Add(GmailService.Scope.MailGoogleCom);
options.Scope.Add(GmailService.Scope.GmailSettingsBasic);
});
在我的控制器中,我得到令牌以进行REST并更新签名:
var user = await _userManager.GetUserAsync(User);
var externalAccessToken = await _userManager.GetAuthenticationTokenAsync(user, "Google", "access_token");
REST格式:
PUT https://www.googleapis.com/gmail/v1/users/me/settings/sendAs/ +“useremaillogged”
标题授权持有人“您的令牌”
Json对象
{ “签名”:“你的签名” }