Sendgrid API:提供的授权授权无效,已过期或已撤销

时间:2016-11-07 11:51:49

标签: c# sendgrid

我刚刚创建了一个sendgrid帐户。然后我去了settings => API密钥 并点击“创建API密钥”并提供任何可能的许可。

然后我创建了一个c#项目,添加了nuget包,并把我写的来自here

的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();
 }

但是我得到了

  

未经授权=>

     

“{\”errors \“:[{\”message \“:\”提供的授权许可无效,已过期或已撤销\“,\”field \“:null,\”help \“: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。

2 个答案:

答案 0 :(得分:2)

您的API密钥有问题。检查this answer,生成新密钥,然后仔细检查您的权限。

您也无需在SendGrid.SendGridAPIClient中指定网址。我会删除该行以减少硬编码值。

答案 1 :(得分:0)

直接输入密钥,请勿使用System.getenv(KEY)

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