Sendgrid API:提供的授权授予无效、过期或被撤销



我刚刚创建了一个sendgrid帐户。然后我进入settings=>API Keys点击"创建API密钥",并给予任何可能的权限。

然后我创建了一个c#项目,添加了nuget包,并从这里编写hello world代码

 public async Task HelloEmail()
 {
            dynamic sg = new SendGrid.SendGridAPIClient("XXX-XXXXXXXXXXXXXXXXXX", "https://api.sendgrid.com");
        Email from = new Email("MY@Email.com");
        String subject = "Hello World from the SendGrid CSharp Library";
        Email to = new Email("test@example.com");
        Content content = new Content("text/plain", "Textual content");
        Mail mail = new Mail(from, subject, to, content);
        Email email = new Email("test2@example.com");
        mail.Personalization[0].AddTo(email);
        dynamic response = await sg.client.mail.send.post(requestBody: mail.Get());
        var x=response.StatusCode;
        var y = response.Body.ReadAsStringAsync().Result;
        var z = response.Headers.ToString();
 }

但是我得到

未经授权=>

"{ "错误":[{"消息","格兰特所提供的授权无效、过期或撤销","":null, "":零}]}"


在这个例子中,他们从EnvironmentVariableTarget.User获得了API密钥,这与此有关吗?

string apiKey = Environment.GetEnvironmentVariable("NAME_OF_THE_ENVIRONMENT_VARIABLE_FOR_YOUR_SENDGRID_KEY", EnvironmentVariableTarget.User);
dynamic sg = new SendGridAPIClient(apiKey);

*问题是没有人在创建密钥时读取消息,而且微软选择向我们显示"API密钥ID",这是有史以来最糟糕的名字

它不是重复的,因为尽管原因是相同的,但没有人会猜到它,因为在c#中我们使用nuget库,而不是api。

您的API密钥有问题。检查这个答案,生成一个新密钥,并再次检查您的权限。

您也不需要在SendGrid.SendGridAPIClient中指定URL。我将删除这一行,以减少硬编码值。

直接放key,不要使用System.getenv(key)

String key = "YOUR KEY";
 SendGrid sg = new SendGrid(key);

最新更新