使用服务帐户转发Gmail API集

时间:2018-08-07 20:07:54

标签: c# google-api gmail-api google-api-dotnet-client service-accounts

当我遇到问题时,有人可以帮忙吗,当调用Gmail API设置转发地址时,请求失败的前提条件错误出现了?以下是我正在尝试使用的C#.Net控制台应用程序。我已将域范围的授权委托给服务帐户。

错误

  

Google.Apis.Requests.RequestError错误的请求[400]错误[消息[错误的请求]位置[-]原因[failedPrecondition]域[全局]]

我想我没有模拟用户。因此,我添加了用户,现在出现以下错误。

错误

  

错误:“ unauthorized_client”,说明:“未授权客户端使用此方法检索访问令牌。”,Uri:“”

namespace GmailForwarder
{
    class Program
    {

        static string ApplicationName = "GmailForwarder";

        static void Main(string[] args)
        {
            ServiceAccountCredential credential;
            string serviceAccount = "gmailforwarder@gmailforwarder.iam.gserviceaccount.com";
            var certificate = new X509Certificate2(@"key.p12", "notasecret", X509KeyStorageFlags.Exportable);

            try
            {
                // Create credential
                credential = new ServiceAccountCredential(
                          new ServiceAccountCredential.Initializer(serviceAccount)
                          {
                            User = "wtestboonew@chicagobooth.edu",
                            Scopes = new[] { GmailService.Scope.GmailSettingsSharing  }
                          }.FromCertificate(certificate));

                // Create Gmail API service.
                var service = new GmailService(new BaseClientService.Initializer()
                {
                    HttpClientInitializer = credential,
                    ApplicationName = ApplicationName,
                });

                string user = "wtestboonew@chicagobooth.edu"; // test gmail account
                string fwdAddr = "acw5274@gmail.com";

                ForwardingAddress fwdAddress = new ForwardingAddress();
                fwdAddress.ForwardingEmail = fwdAddr;

                var createFwdAddressResult = service.Users.Settings.ForwardingAddresses.Create(fwdAddress,"me").Execute();     

            }
            catch (Exception ex)
            {

            }     
        }
    }
} 

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

我也遇到了这个问题(400码)。我遇到两个问题:

1)正如ACW所说,我在所需范围列表中缺少了“ https://mail.google.com/”,在“ https://www.googleapis.com/auth/gmail.settings.sharing”中缺少了appart。

2)我缺少将包裹在引号(“”)中的范围放在管理控制台中(指定服务帐户的范围时)。

希望它对某人有帮助