如何更新用户Gmail签名

时间:2018-01-24 11:11:59

标签: c# google-api gmail-api asp.net-core-2.0 google-api-dotnet-client

我使用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"));

但我有另外一个问题,这段代码不起作用。有人知道如何实现这个?感谢。

2 个答案:

答案 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客户端库执行此操作。

请参阅问题9331109以及1151

答案 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对象

{ “签名”:“你的签名” }