RHa*_*ris 9 c# http mailchimp mailchimp-api-v3.0
我正在尝试通过新的3.0 REST API访问我们的MailChimp帐户.我做了以下事情:
using(var http = new HttpClient())
{
var creds = Convert.ToBase64String(Encoding.ASCII.GetBytes("username:mailchimpapikey-us1"));
http.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", creds);
string content = await http.GetStringAsync(@"https://us1.api.mailchimp.com/3.0/lists");
Console.WriteLine(content);
}
Run Code Online (Sandbox Code Playgroud)
但是,当我运行此代码时,我得到401错误,其中包含以下json详细信息:
{"type":"http://kb.mailchimp.com/api/error-docs/401-api-key-invalid","title":"API Key Invalid","status":401,"detail":"Your API key may be invalid, or you've attempted to access the wrong datacenter.","instance":"a9fe4028-519e-41d6-9f77-d2caee4d4683"}
Run Code Online (Sandbox Code Playgroud)
我在我的URI中使用的数据中心(本例中为us1)与我的API密钥上的dc匹配.如果我使用MailChimp SDK,我的API密钥有效,所以我知道我的密钥无效.另外,使用Fiddler,我可以看到MailChimp SDK调用与我在URI中执行的相同的dc.
有关为什么我在验证时遇到问题的想法?
编辑 正如问题中所述,我特别要求访问新的3.0 REST API.我试图直接这样做而不是使用第三方包装器.
新的API由http调用组成,所以它应该非常简单.我只是遇到了身份验证问题.
RHa*_*ris 17
所以我终于可以和MailChimp 的超级技术支持人员聊天了.
MailChimp文档声明如下
最简单的身份验证方法是使用HTTP Basic Auth.输入任何字符串作为用户名,并提供API密钥作为密码.您的HTTP库应该具有对基本授权的内置支持.
他们的文档有点误导.通常,Basic Auth的Auth标头看起来像我发送的内容:
授权:基本xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,其中x行代表base64编码的用户名:password.
但是,与支持技术人员交谈时,他们使用的实际实现是:
授权:用户名keyid
没有base64编码,没有Basic关键字.用户名甚至不必是您的用户名.
所以,这是工作代码:
using(var http = new HttpClient())
{
http.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Basic", mailchimpapikey-us1);
string content = await http.GetStringAsync(@"https://us1.api.mailchimp.com/3.0/lists");
Console.WriteLine(content);
}
Run Code Online (Sandbox Code Playgroud)
编辑 注意评论.TooMuchPete是正确的,因为普通的HTTP Basic Auth标头可以正常工作.显然我在MailChimp方面遇到了一些旧代码或其他东西.
我将离开帖子作为任何试图调用新3.0 API的人的参考.
| 归档时间: |
|
| 查看次数: |
14987 次 |
| 最近记录: |