Отсутствует ключ API при вызове метода RestMethod API после базовой аутентификации HTTP в Mailchimp

#powershell #mailchimp

#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
  

Когда я пытаюсь получить основную информацию о списке, это идентификатор «d3a7a4432d».

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

Я получаю это сообщение об ошибке:

Invoke-RestMethod : {
 "тип":"http://developer.mailchimp.com/documentation/mailchimp/guides/error-glossary /",
"заголовок": "Отсутствует ключ API",
"статус": 401,
"подробности": "Ваш запрос не включал ключ API.",
"экземпляр":""
}
В строке: 7 символ: 9
  $gist = Invoke-RestMethod -Method Get -Uri $URLMailChimp
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   CategoryInfo: недействительная операция: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], исключение WebException
   FullyQualifiedErrorId: исключение WebCmdletWebResponseException, Microsoft.PowerShell.Команды.InvokeRestMethodCommand

Я не понимаю, как снова передать ему мой ключ API. Я думал, что, зарегистрировав его, он решил проблему.

Ответ №1:

Я не использую MailChimp, но если первый вызов не предоставит вам токен доступа (и документация, а также ваше сообщение об ошибке не выглядят так, как это было бы), вам необходимо предоставить заголовок аутентификации с каждым запросом.

 $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
  

Комментарии:

1. прохождение через объект json $JSON = ConvertTo-Json @{ apikey = «thiskey» } $gist = Вызов RestMethod -метода Get -Uri $URLMailChimp -body $JSON