Google api 无法使用用户。消息:修改google API选项

Google api 无法使用用户。消息:修改google API选项,google-api,gmail,google-api-dotnet-client,Google Api,Gmail,Google Api Dotnet Client,有人能帮我解决以下例外吗? 下面是我用来将收件箱邮件移动到另一个标签的.Net代码 { List<String> labelsToAdd = new List<string>(); labelsToAdd.Add("Label_1"); //List<String>`enter code here` labelsToRemove = new List<string>(); //labelsToRemove.Add("INBOX"); Modify

有人能帮我解决以下例外吗? 下面是我用来将收件箱邮件移动到另一个标签的.Net代码

{
List<String> labelsToAdd = new List<string>();
labelsToAdd.Add("Label_1");
//List<String>`enter code here` labelsToRemove = new List<string>();
//labelsToRemove.Add("INBOX");

ModifyMessageRequest mods = new ModifyMessageRequest();
mods.AddLabelIds = labelsToAdd;
//mods.RemoveLabelIds = labelsToRemove;

gmail.Users.Messages.Modify(mods, usr, email.Id).Execute();
}
{
列表标签添加=新列表();
添加标签(“标签1”);
//List`enter code here`labelsToRemove=new List();
//标签删除。添加(“收件箱”);
ModifyMessageRequest mods=新建ModifyMessageRequest();
mods.AddLabelIds=labelsToAdd;
//mods.RemoveLabelIds=标签移动;
gmail.Users.Messages.Modify(mods,usr,email.Id).Execute();
}
我得到了这样的错误

GoogleAPIException-{“发生错误,但错误响应可能会失败。” 不能反序列化“}

Newtonsoft.Json.JsonReaderException-{”意外字符
解析值时遇到:您的代码对我来说很好。我认为您可能遇到的唯一问题是
labelsToAdd.Add(“Label_1”);
可能不是标签id。但是,当我尝试发送无效的标签id时,我得到的是

无效标签:ADFADSFDSFF[400]

这是我使用的代码

认证

//
///此方法使用Oauth2向用户请求授权。
///凭据存储在System.Environment.SpecialFolder.Personal中
///文件https://developers.google.com/accounts/docs/OAuth2
/// 
///从Google开发者控制台到客户端机密json文件的路径。
///正在授权的用户的标识字符串。
///DriveService用于针对驱动器API发出请求
公共静态Gmail服务AuthenticateAuthGmail(字符串clientSecretJson,字符串用户名)
{
尝试
{
if(string.IsNullOrEmpty(用户名))
抛出新的ArgumentNullException(“用户名”);
if(string.IsNullOrEmpty(clientSecretJson))
抛出新ArgumentNullException(“clientSecretJson”);
如果(!File.Exists(clientSecretJson))
抛出新异常(“clientSecretJson文件不存在。”);
//这些是您需要的权限范围。最好只请求您需要的权限,而不是所有权限
string[]scopes=new string[]{GmailService.Scope.gmailsetings共享,//管理您的敏感邮件设置,包括谁可以管理您的邮件
GmailService.Scope.gmailsetingsbasic,//管理您的基本邮件设置
GmailService.Scope.GmailReadonly,//查看您的电子邮件、消息和设置
GmailService.Scope.GmailCompose,//管理草稿和发送电子邮件
GmailService.Scope.gmailsert,//将邮件插入邮箱
GmailService.Scope.gmillabels,//管理邮箱标签
GmailService.Scope.GmailModify,//查看和修改但不删除您的电子邮件
GmailService.Scope.GmailSend,//代表您发送电子邮件
GmailService.Scope.MailGoogleCom};//查看和管理您的邮件
用户凭证;
使用(var stream=newfilestream(clientSecretJson,FileMode.Open,FileAccess.Read))
{
字符串credPath=System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
credPath=Path.Combine(credPath,“.credentials/”,System.Reflection.Assembly.getExecutionGassembly().GetName().Name);
//请求身份验证或加载以前存储的用户名身份验证

credential=GoogleWebAuthorizationBroker.AuthorizationAsync(GoogleClientSecrets.Load(stream.Secrets), 范围, 用户名, 取消令牌。无, 新文件数据存储(credPath,true))。结果; } //创建驱动器API服务。 返回新的Gmail服务(新的BaseClientService.Initializer() { HttpClientInitializer=凭证, ApplicationName=“Gmail Oauth2身份验证示例” }); } 捕获(例外情况除外) { Console.WriteLine(“创建Oauth2帐户Gmail服务失败”+ex.Message); 抛出新异常(“CreateServiceAccountGmail失败”,ex); } }
请求

// find the label I want to use.
var findLabel = serviceGmail.Users.Labels.List("me").Execute().Labels.Where(a => a.Name.ToLower().Equals("daimto")).FirstOrDefault();

// search for the mails that I want to add it to
var request = serviceGmail.Users.Messages.List("me");
request.Q = "from:stuff@daimto.com";
request.Execute();

var allmails = request.Execute();           

ModifyMessageRequest mods = new ModifyMessageRequest();
mods.AddLabelIds = new List<string> { allLabels.Id };

// loop though each email.
foreach (var item in allmails.Messages)
   {
   var result = serviceGmail.Users.Messages.Modify(mods, "me", item.Id).Execute();
   }
//找到我要使用的标签。
var findLabel=serviceGmail.Users.Labels.List(“me”).Execute().Labels.Where(a=>a.Name.ToLower().Equals(“daimto”)).FirstOrDefault();
//搜索我要添加到的邮件
var request=serviceGmail.Users.Messages.List(“我”);
request.Q=“发件人:stuff@daimto.com";
request.Execute();
var allmails=request.Execute();
ModifyMessageRequest mods=新建ModifyMessageRequest();
mods.AddLabelIds=新列表{allLabels.Id};
//循环浏览每封电子邮件。
foreach(allmail.Messages中的var项)
{
var result=serviceGmail.Users.Messages.Modify(mods,“me”,item.Id).Execute();
}

我使用的是Gmail.dll的1.19.0.694。代码来自我的示例项目

您的代码对我来说很好。我认为您可能遇到的唯一问题是
标签添加(“Label_1”);
可能不是标签id。但是,当我尝试发送无效的标签id时,我得到了一个标签id

无效标签:ADFADSFDSFF[400]

这是我使用的代码

认证

//
///此方法使用Oauth2向用户请求授权。
///凭据存储在System.Environment.SpecialFolder.Personal中
///文件https://developers.google.com/accounts/docs/OAuth2
/// 
///从Google开发者控制台到客户端机密json文件的路径。
///识别st
// find the label I want to use.
var findLabel = serviceGmail.Users.Labels.List("me").Execute().Labels.Where(a => a.Name.ToLower().Equals("daimto")).FirstOrDefault();

// search for the mails that I want to add it to
var request = serviceGmail.Users.Messages.List("me");
request.Q = "from:stuff@daimto.com";
request.Execute();

var allmails = request.Execute();           

ModifyMessageRequest mods = new ModifyMessageRequest();
mods.AddLabelIds = new List<string> { allLabels.Id };

// loop though each email.
foreach (var item in allmails.Messages)
   {
   var result = serviceGmail.Users.Messages.Modify(mods, "me", item.Id).Execute();
   }