在Mailchimp中进行HTTP基本身份验证后进行API RestMethod调用时缺少API密钥

时间:2016-10-13 16:41:14

标签: powershell mailchimp

在PowerShell中,我能够使用HTTP基本身份验证登录Mail Chimp。

$acctname = 'thisismyusername'
$password = 'thisismyapikey' 
$params = @{
    Uri = 'https://us14.api.mailchimp.com/3.0/';
    Method = 'Get'; #(or POST, or whatever)
    Headers = @{Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("$($acctname):$($password)"));} #end headers hash table
} #end $params hash table

$var = Invoke-RestMethod @params
$var

当我尝试获取列表的基本信息时,ID为" d3a7a4432d"。

$URL = "https://us14.api.mailchimp.com/3.0/"
$Endpoint = "/lists/d3a7a4432d"
$URLMailChimp = "$URL$Endpoint"
$gist = Invoke-RestMethod -Method Get -Uri $URLMailChimp

我收到此错误消息:

Invoke-RestMethod : {
    "type":"http://developer.mailchimp.com/documentation/mailchimp/guides/error-glossary/",
    "title":"API Key Missing",
    "status":401,
    "detail":"Your request did not include an API key.",
    "instance":""
}
At line:7 char:9
+ $gist = Invoke-RestMethod -Method Get -Uri $URLMailChimp
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     + CategoryInfo          : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException
     + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand

我不知道如何再次传递我的API密钥。我想通过记录它解决了这个问题。

1 个答案:

答案 0 :(得分:0)

我没有使用MailChimp,但除非第一次调用为您提供访问令牌(而documentation以及您的错误消息看起来不像),否则您需要为每个请求提供身份验证标头。

$acctname = 'thisismyusername'
$password = 'thisismyapikey'
$URL      = 'https://us14.api.mailchimp.com/3.0/'
$listID   = 'd3a7a4432d'

$auth = @{Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("${acctname}:${password}"))}

$gist = Invoke-RestMethod -Method Get -Uri "$URL/lists/$listID" -Headers $auth