如何更新用户的Gmail签名

How to update users Gmail signature

我正在使用具有 Google 身份验证的 ASP .Net Core 2。我需要更新电子邮件签名 (gmail)。但我不知道如何获取 Google 凭据(身份验证后)。

我的 url 端口有问题,一直生成另一个端口 - 例如:localhost:4550,另一个 localhost:3568(我无法解锁正确的 url 在 Google 控制台因为那个)。我试过这个:Whosebug。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"));

但我还有其他问题,这段代码不起作用。有人知道我该如何实现这个??谢谢

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"));

用于验证已安装的应用程序,例如在代码 运行 所在的计算机上打开浏览器 window 的控制台应用程序。对于 Web 应用程序,身份验证需要在客户端计算机上打开浏览器身份验证 window。目前无法使用 .Net 客户端库执行此操作。

请查看问题933 and 1109 and 1151

"The Google .net client library does not support Asp .net Core currently."

然后,我将 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"

Header授权方"your token"

Json Object

{ "signature":"your signature" }