2017-02-07 5 views
1

私は自分の最初のPOST要求をAPIにしようとしています。何らかの理由で、私は常にステータス403を受け取ります。私はそれが間違って生成されている署名だと思う。 api-keyとクライアントIDは間違いなく正しいです。POST要求を正しく行う方法

私のコード私はBitstamp APIにアクセスしようとしている

<- HTTP/1.1 403 Authentication Failed 

nonce <-as.integer(Sys.time()) 

post_message <- paste0(nonce, data_client.id, data_key) # data_client.id = client id # data_key = key 

sha.message <- toupper(digest::hmac(data_secret, object = post_message, algo = 'sha256', serialize = TRUE)) 

url <- 'https://www.bitstamp.net/api/v2/balance/' 


body = list('API-KEY' = data_key, 'nonce' = nonce, 'signature' = sha.message) 

httr::POST(url, body = body, verbose()) 

出力:https://www.bitstamp.net/api/?package=Rbitcoin&version=0.9.2

すべてのプライベートAPI呼び出しが認証を必要とします。 認証を成功させるには、APIキー、署名、および nonceパラメータを指定する必要があります。

は、 "アカウント" に進み、APIキーを取得するには、APIキー、 "セキュリティ"、次に "APIへのアクセス"。 権限を設定し、[キーを生成]をクリックします。

NONCEN

onceは通常の整数です。それは毎回 リクエストを行う度に増やさなければなりません。詳細はこちらをご覧ください。例:最初のリクエストでnonce を1に設定した場合は、 の2番目のリクエストで少なくとも2に設定する必要があります。あなたは1で始める必要はありません。共通の は、そのパラメータにUNIX時間を使用することです。

SIGNATURE

署名ナンス、顧客 ID(ここで見つけることができる)とAPIキーを含むHMAC-SHA256エンコードされたメッセージです。 HMAC-SHA256コードは、APIキーで生成された秘密鍵を使用して生成された である必要があります。 このコードは、16進表現(64 大文字)に変換する必要があります。

答えて

1

あなたの質問がまだ立っていますが、コードに基づいて、私はそれを動作させることができませんでした。実際、主な問題は本体にあり、APIドキュメントではAPIキーの代わりに 'キー'が必要であることが示されています。 また、serializeは、TRUEではなくFALSEにする必要があります。現時点で

この作品(ただし、APIが変更される可能性があり):

nonce <-as.integer(Sys.time()) 

post_message <- paste0(nonce, data_client.id, data_key) # data_client.id = client id # data_key = key 

sha.message <- toupper(digest::hmac(data_secret, object = post_message, algo = 'sha256', serialize = FALSE)) 

url <- 'https://www.bitstamp.net/api/v2/balance/' 

body = list('key' = data_key, 'nonce' = nonce, 'signature' = sha.message) 

httr::POST(url, body = body, verbose()) 
関連する問題