frank1 has asked for the wisdom of the Perl Monks concerning the following question:

I have a problem with my script

Am getting this error

{"code":401,"message":"Signature has expired"}401 Unauthorized

Full code

#!/usr/bin/perl - wT use strict; use warnings; use HTTP::Request; use JSON; use HTTP::Tiny; use LWP::UserAgent; use JSON::WebToken; use Digest::SHA qw(hmac_sha256_hex); my $ua = LWP::UserAgent->new( ssl_opts => { verify_hostname => 0 }, ); $ua->agent("MyApp/0.1"); my $apiKey = 'key'; my $apiSecret = 'secret key'; my $urlcb = "https://api.poloniex.com/v2/wallets/withdraw"; my $url = URI->new($urlcb); my $urlpath = $url->path(); my $nonce = time; my %mas = ( "coin" => "USDT", "network" => "TRX", "amount" => "10", "address" => "TL81N0N8EEf4cAwayizMHuUuo6666666" ); my $json = encode_json \%mas; my $signature = hmac_sha256_hex($nonce.'POST'.$urlpath.$json, $apiSecr +et); my %payload = ( "key" => $apiKey, "signatureMethod" => 'HmacSHA256', "signatureVersion" => '2', "signTimestamp" => $nonce, "signature" => $signature ); my $req = HTTP::Request->new(POST => $url); $req->content_type('application/json'); $req->header(%payload); $req->content($json); my $resp = $ua->request($req); if ($resp->is_success) { print $resp->decoded_content; print $resp->status_line, "n"; } else { print $resp->decoded_content; print $resp->status_line, "n"; }
 API Reference: https://api-docs.poloniex.com/spot/api/#signature-example-code

 Withdraw Section: https://api-docs.poloniex.com/spot/api/private/wallet#withdraw-currency-v2

Replies are listed 'Best First'.
Re: Signature has expired
by hippo (Archbishop) on Nov 28, 2024 at 15:56 UTC

    Fix the system time on your client machine, perhaps?


    🦛

Re: Signature has expired
by sectokia (Friar) on Nov 29, 2024 at 02:18 UTC

    Based on the CURL example on the link provided, "signTimestamp" needs to be in milliseconds.

    This is lazy but would work:

    my $nonce = time."000";

      thanks it has worked and skipped this error. but i got this error after the fix of timestamp

      {"message":"Invaid of signature","code":401}401 Unauthorized