2014-12-03 120 views
1

我正在使用Coinbase API,请visit here了解有关此API的更多信息。缺少必需的参数:帐户

所以,我运行这个程序,你可以看看,但它说:

{"success":false,"errors":["Required parameter missing: account"]} 

这里是我的程序:

import java.io.IOException; 
import java.security.InvalidKeyException; 
import java.security.NoSuchAlgorithmException; 

import javax.crypto.Mac; 
import javax.crypto.spec.SecretKeySpec; 

import org.apache.commons.codec.binary.Hex; 
import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.client.ClientProtocolException; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.methods.HttpGet; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.client.methods.HttpRequestBase; 
import org.apache.http.entity.StringEntity; 
import org.apache.http.impl.client.HttpClientBuilder; 
import org.apache.http.util.EntityUtils; 

import com.coinbase.api.Coinbase; 
import com.coinbase.api.CoinbaseBuilder; 

public class TransactionExample { 

    static String API_KEY = "MY API KEY"; 

    static String API_SECRET = "MY API SECRET"; 

    public static String getHttp(String url, String body) 
      throws InvalidKeyException, NoSuchAlgorithmException, 
      ClientProtocolException, IOException { 

     String nonce = String.valueOf(System.currentTimeMillis()); 
     String message = nonce + url + (body != null ? body : ""); 

     Mac mac = Mac.getInstance("HmacSHA256"); 
     mac.init(new SecretKeySpec(API_SECRET.getBytes(), "HmacSHA256")); 
     String signature = new String(Hex.encodeHex(mac.doFinal(message.getBytes()))); 

     HttpRequestBase request; 
     if (body == null || body.length() == 0) 
      request = new HttpGet(url); 
     else { 
      HttpPost post = new HttpPost(url); 
      post.setEntity(new StringEntity(body)); 
      request = post; 
     } 
     request.setHeader("ACCESS_KEY", API_KEY); 
     request.setHeader("ACCESS_SIGNATURE", signature); 
     request.setHeader("ACCESS_NONCE", nonce); 

     HttpClient httpClient = HttpClientBuilder.create().build(); 
     HttpResponse response = httpClient.execute(request); 

     HttpEntity entity = response.getEntity(); 
     if (entity != null) 
      return EntityUtils.toString(entity); 
     return null; 
    } 

    public static void main(String[] args) throws InvalidKeyException, NoSuchAlgorithmException, ClientProtocolException, IOException{ 

     System.out.println(getHttp("https://api.coinbase.com/v1/accounts", "{'account':{'name':'Savings Wallet'}}")); 
    } 
} 

请帮帮忙!

当然,帮助将不胜感激!

回答

0

你需要换出占位符文本这里您的实际API密钥:

static String API_KEY = "MY API KEY"; 

static String API_SECRET = "MY API SECRET"; 

你可以在https://www.coinbase.com/settings/api得到它们。

虽然如果刚开始时,我建议先使用 API进行测试,以避免任何安全风险。如果您的API密钥有权购买/出售或从您的帐户中汇出资金,任何拥有这些密钥的人都可以这样做。

使用Sandbox API时,您需要将URL从https://api.coinbase.com/v1/accounts更改为https://api.sandbox.coinbase.com/v1/accounts

此外,我们发布了v2 of our API,这更加棒,但需要对此脚本进行其他修改。

相关问题