C# GMail API错误:路径;{userId}/messages/send";遗漏了一个“;用户ID“;参数这是虫子吗?

C# GMail API错误:路径;{userId}/messages/send";遗漏了一个“;用户ID“;参数这是虫子吗?,c#,.net,unity3d,gmail,gmail-api,C#,.net,Unity3d,Gmail,Gmail Api,我正试图从Unity3D脚本中通过.NET API for GMail发送电子邮件。不幸的是,我遇到了一些麻烦。每当我在游戏中按下“R”键时,就会调用以下代码 //MEMBERS INCLUDED AT TOP OF CLASS //TextAsset credFile; //static String AppName = "Redacted-Appname"; // //List<string> Scopes = new List<string>() { "GMAIL_

我正试图从Unity3D脚本中通过.NET API for GMail发送电子邮件。不幸的是,我遇到了一些麻烦。每当我在游戏中按下“R”键时,就会调用以下代码

//MEMBERS INCLUDED AT TOP OF CLASS
//TextAsset credFile;
//static String AppName = "Redacted-Appname";
//
//List<string> Scopes = new List<string>() { "GMAIL_SEND" };



if (Input.GetKeyDown(KeyCode.R))
    {
        UserCredential emailerCredential;

        //Create Credential
        using (MemoryStream credStream = new MemoryStream(credFile.bytes))
        {
            string credPath = "token.json";
            emailerCredential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                GoogleClientSecrets.Load(credStream).Secrets,
                Scopes,
                "myDoubleCheckedEmailAddress@redacted.com",
                CancellationToken.None,
                new FileDataStore(credPath, true)).Result;
        }

        //Create Service using credential
        GmailService service = new GmailService(new BaseClientService.Initializer()
        {
            HttpClientInitializer = emailerCredential,
            ApplicationName = AppName
        });

        //Create Mail Message
        MailMessage message = new MailMessage(
            "myDoubleCheckedEmailAddress@redacted.com",
            "DoubleCheckedTOEmailAddress@redacted.com",
            "Test Email Using GMail API",
            "This is a test of the emergency llama system.");

        //Create Gmail Message
        Message emailmsg = new Message();
        //ConvertMail Message to URL Encoded Base64 string and feed it into Gmail message
        emailmsg.Raw = HttpUtility.UrlEncode(Convert.ToBase64String(Encoding.ASCII.GetBytes(message.ToString())));
        string userId = "myDoubleCheckedEmailAddress@redacted.com";
        service.Users.Messages.Send(emailmsg, userId).Execute();
    }
//包含在类顶部的成员
//TextAsset credFile;
//静态字符串AppName=“修订的AppName”;
//
//List Scopes=newlist(){“GMAIL_SEND”};
if(Input.GetKeyDown(KeyCode.R))
{
用户凭证emailerCredential;
//创建凭证
使用(MemoryStream credStream=新的MemoryStream(credFile.bytes))
{
字符串credPath=“token.json”;
emailerCredential=GoogleWebAuthorizationBroker.AuthorizationAsync(
GoogleClientSecrets.Load(credStream).Secrets,
范围,
"myDoubleCheckedEmailAddress@redacted.com",
取消令牌。无,
新文件数据存储(credPath,true))。结果;
}
//使用凭据创建服务
Gmail服务=新的Gmail服务(新的BaseClientService.Initializer()
{
HttpClientInitializer=emailerCredential,
ApplicationName=AppName
});
//创建邮件消息
MailMessage=新的MailMessage(
"myDoubleCheckedEmailAddress@redacted.com",
"DoubleCheckedTOEmailAddress@redacted.com",
“使用GMail API测试电子邮件”,
“这是对应急骆驼系统的测试。”);
//创建Gmail消息
Message emailmsg=新邮件();
//将邮件转换为URL编码的Base64字符串,并将其输入Gmail邮件
emailmsg.Raw=HttpUtility.UrlEncode(Convert.ToBase64String(Encoding.ASCII.GetBytes(message.ToString()));
字符串userId=”myDoubleCheckedEmailAddress@redacted.com";
service.Users.Messages.Send(emailmsg,userId.Execute();
}
由于这段代码,我最终出现了以下异常:

ArgumentException:路径“{userId}/messages/send”缺少“userId” 参数UnityLoader.js:1043参数名称:{userId}/messages/send UnityLoader.js:1043 at 中的Google.api.Requests.RequestBuilder.BuildRestPath()[0x00000] :0 UnityLoader.js:1043--- 来自引发异常的上一个位置的堆栈跟踪--- UnityLoader.js:1043 at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() [0x00000]英寸:0

我相信请求生成器正在REST请求中构建{userId},而不是插入实际的用户名。正在寻找更有经验的人来确认/否认这一点。这是一个错误,还是我做错了


假设这是一个bug,我将把它发布在GMail.Net API github上:

我将它作为bug报告发布到Google github上,并记录在那里。然而,我被告知Unity3D不是一个受支持的平台,因此该问题的优先级较低。如果有人想解决这个问题,他们必须将repo分支。

看起来它正在阅读某种字典来进行插值,但是字典没有
用户ID
键。作为对删除注释的响应,
Message
类来自
Google.api.Gmail.v1.Data
。我还尝试将消息更改为var(隐式类型),并得到了相同的结果@Ruzihm谢谢你的提示,但不幸的是,仍然没有骰子。我得到了完全相同的结果。在更改了
范围后
如果你认为这是一个bug,最好直接发布在谷歌的公共问题跟踪器上。但是在这张支票之前:1。修改作用域后,删除
~/.credentials/*.json
中的凭据,以启动新的授权流。2.确保包含所有必要的库。3.看看是否可以通过严格遵循示例来解决此问题(并使用scope
GmailService.scope.GmailSend