0

我正在尝试使用 Perl 和 Net::SSLeay 请求新 REST API 的令牌(我的提供程序仅支持 Net::SSLeay,未安装 NET::PayPal 等模块)但请求失败。我究竟做错了什么?特别是我不确定,设置'grant_type'很热......

use Net::SSLeay qw(get_https make_form make_headers post_https);
use MIME::Base64;
use strict;

my $site = "api.sandbox.paypal.com";
my $port = "443";
my $path = "/v1/oauth2/token?grant_type=client_credentials";
my $uname = "my_client_id";
my $password = "my_secret";

$uname = encode_base64($uname);
$password = encode_base64($password);
my $cred = "Basic $uname:$password";

my ($page, $result, %headers) = post_https($site, $port, $path, make_headers(
'Accept'=>"application/json",
'Accept-Language'=>"en_US",
'Authorization'=>"$cred"
));

有人在这里可以提供帮助吗?

最好的问候,拉斯

4

1 回答 1

0

您需要对字符串进行 base64 处理user:password,而不是单独进行。所以在你的例子中应该是:

my $uname = "EN_Qsr0vnzjAI8iixqZHd2yoNtIZYDkdAreSpqbe3SiU";
my $password ="EDQccsa77f81xM-QU9kADtioNtIZYDkdAreSpqbe3SiU";

my $cred = "Basic " . encode_base64($uname . ":" . $password);
于 2013-03-17T00:39:52.367 回答