Пытаюсь разобрать curl API
но я получаю эту ошибку 401 Unauthorized
я не знаю, откуда проблема.
потому что данные аутентификации в порядке
это завиток
curl 'https://api.twilio.com/2010-04-01/Accounts/SID/Messages.json' \
-X POST \
--data-urlencode 'To=whatsapp:+123456789' \
--data-urlencode 'From=whatsapp:+1234567890' \
--data-urlencode 'Body=Your Yummy Cupcakes Company order of 1 dozen frosted cupcakes has shipped and should be delivered on July 10, 2019. Details: http://www.yummycupcakes.com/' \
-u SID:[AuthToken]
#!/usr/bin/perl
use strict;
use warnings;
use HTTP::Tiny;
use JSON;
use Data::Dumper;
my $url = "https://api.twilio.com/2010-04-01/Accounts/SID/Messages.json";
my $json = encode_json {
To => 'whatsapp:+256775562361',
From => 'whatsapp:+14155238886',
Body => 'new test msg',
};
my $http = HTTP::Tiny->new(
default_headers => {
Authorization => 'SID:TOKEN',
}
);
my $response = $http->post( $url => {
content => $json,
headers => { 'Content-Type' => 'application/json' },
});
if ( $response->{'is_success'} ) {
print Dumper( decode_json $response->{'content'} );
} else {
print "$response->{'status'} $response->{'reason'}\n";
}
Что касается "это завиток", вы говорите, что эта версия работает? Так почему вы отправляете JSON в версии Perl?
401 Неавторизованный
Формат заголовка «Авторизация» не <user>:<pass>
— это <auth-scheme> <authorization-parameters>
. curl
делает это за вас, но для этого в основном это:
Authorization: Basic <mime-encoded "<user>:<pass>">
Я использую для этого модуль URI:
my $uri = URI->new("https://api.twilio.com/...");
$uri->userinfo("$sid:$auth");
$http->post( $uri => ... );
Re "но я получаю эту ошибку", какая ошибка?