我在c#中使用gmail API修改消息标签时出现问题

时间:2015-09-29 01:53:06

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

我正在尝试删除邮件标签。我能够成功阅读邮件,但是当我尝试修改邮件标签时我遇到了问题

  

发生错误:Google.Apis.Requests.RequestError   许可不足[403]   错误   消息[权限不足]位置[ - ]原因[insufficientPermis   sions]域[全球]

我不得不尝试从json创建一个服务,但它有同样的问题。 这是我的代码

var credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                new ClientSecrets
                {
                    ClientId = clientId,
                    ClientSecret = clientSecret,
                },
                new[] { GmailService.Scope.MailGoogleCom, GmailService.Scope.GmailModify, GmailService.Scope.GmailCompose },//new[] { GmailService.Scope.GmailModify, GmailService.Scope.GmailCompose, GmailService.Scope.GmailReadonly },
                "user",
                CancellationToken.None).Result;

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

然后我调用api来修改消息中的标签UNREAD

ModifyMessageRequest mods = new ModifyMessageRequest();
mods.AddLabelIds = null;
mods.RemoveLabelIds = new List<string> { "UNREAD" });
service.Users.Messages.Modify(mods, userId, messageId).Execute(); 

1 个答案:

答案 0 :(得分:0)

您需要修改范围或添加

  

https://www.googleapis.com/auth/gmail.labels仅创建,阅读,更新和删除标签。

或只是要求

  

https://mail.google.com/对帐户的完全访问权限,包括永久删除线程和邮件。只有当您的应用程序需要立即永久删除线程和消息时,才应该请求此范围,绕过“废纸篓”;所有其他操作都可以使用较不宽松的范围执行。

removelablesids也会请求标签 ID

removeLabelIds[]  A list IDs of labels to remove from this message.

我不认为 new List {“UNREAD”}); 将返回标签ID。尝试lables.list找到标签和那些