2016-06-24 18 views
-1

私はそのエラーコードを取得しています(私はそれは確かに彼らの側に取り組んでいますので、公開APIを使用していますが;)):PHP - HMAC認証

HMAC認証キーと署名が与えられたが、彼らはあります無効。 3日後

function get_myself($request){ 
    $public_key = "MY_PUBLIC_KEY"; 
    $secret = "MY_PRIVATE_KEY"; 

    $parameters = array(
     "client_id" => $public_key, 
     "client_secret" => $secret 
    ); 
    $data = http_build_query($parameters); 

    $ch = curl_init("https://localbitcoins.com".$request); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
    curl_setopt($ch, CURLOPT_USERAGENT, "curl"); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
    $nonce = time(); 
    $sig = base64_encode (hash_hmac("sha256", $nonce.$public_key.$request, $secret)); 
    $options = array(
     CURLOPT_RETURNTRANSFER => 1, 
     CURLOPT_TIMEOUT => 30, 
     CURLOPT_HTTPHEADER => array(
      "Apiauth-Key:".$public_key, 
      "Apiauth-Nonce:".$nonce, 
      "Apiauth-Signature:".$sig 
     ), 
    ); 
    curl_setopt_array($ch, $options); 
    $result = curl_exec($ch); 
    curl_close($ch); 
    return $result; 
} 

$getinfo = array(); 
$getinfo = get_myself("/api/myself/"); 
echo "<pre>"; print_r($getinfo); echo "</pre>"; 
+0

https://localbitcoins.com/api-docs/errors/は、あなたが「秘密鍵と署名計算の妥当性を確認してください。」すべきであると述べています – moxn

+1

私は資格情報を持っていますが問題はどこから来ていないのですか...誰か他の人がその問題を抱えていますオンラインで別のコードが見つかりました...私はそれを投稿します;) –

答えて

1

、私は '解決策' を見つけ...ここで働い例です:

function localbitcoins_query($path, array $req = Array()) { 
    $key='MY_KEY'; 
    $secret='MY_SECRET'; 
    $mt = explode(' ', microtime()); 
    $nonce = $mt[1].substr($mt[0], 2, 6); 
    if ($req) { 
     $get=httpbuildquery($req); 
     $path=$path.'?'.$get; 
    } 
    $postdata=$nonce.$key.$path; 
    $sign = strtoupper(hash_hmac('sha256', $postdata, $secret)); 
    $headers = array(
     'Apiauth-Signature:'.$sign, 
     'Apiauth-Key:'.$key, 
     'Apiauth-Nonce:'.$nonce 
    ); 
    $ch = null; 
    $ch = curl_init('https://localbitcoins.com'.$path); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, TRUE); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20); 
    $res = curl_exec($ch); 
    if ($res === false) throw new Exception('Curl error: '.curlerror($ch)); 
    $dec = json_decode($res, true); 
    if (!$dec) throw new Exception('Invalid data: '.$res); 
    curl_close($ch); 
    return $dec; 
} 

$getinfo = array(); 
$devise = "EUR"; 
$url = "/buy-bitcoins-online/".$devise."/western-union/.json"; 

$getinfo = localbitcoins_query($url); 
echo "<pre>"; print_r($getinfo); echo "</pre>"; 

それは私の側に働いて、私はPOST/GETの概念がなかったと仮定以前は適切に処理していましたが、それはそのバージョンにあります。

は、お楽しみください:P

+0

自分の答えを承認できることを忘れて –