试图从Dwolla宁静的api获取访问令牌

时间:2017-05-09 22:05:01

标签: java json http http-headers dwolla

我无法获取沙盒环境的访问令牌。 我按照本指南进行身份验证:OAuth

所以当我创建我的请求时,按照本指南,我从api得到以下响应: {"error":"access_denied","error_description":"Invalid application credentials."}

根据说明,我使用mf客户端ID密钥和密码作为我的客户端密钥。

以下是我使用的代码:

public static void main(String[] args) {
    try {

        URL url = new URL("https://www.dwolla.com/oauth/v2/token");
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("POST");

            conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
    conn.setRequestProperty("client_id", "<Key>");
            conn.setRequestProperty("client_secret", "<Secret>");
            conn.setRequestProperty("grant_type", "client_credentials"); 


            conn.setDoInput(true);
            conn.setDoOutput(true);



            System.out.println("Message:" + conn.getResponseMessage());

            BufferedReader br = new BufferedReader(new InputStreamReader(
            (conn.getInputStream())));

    String output;
    System.out.println("Output from Server .... \n");
    while ((output = br.readLine()) != null) {
        System.out.println(output);
    }

    conn.disconnect();
    } catch (MalformedURLException ex) {
        Logger.getLogger(PaymentTest.class.getName()).log(Level.SEVERE, null, ex);
    } catch (IOException ex) {
        Logger.getLogger(PaymentTest.class.getName()).log(Level.SEVERE, null, ex);
    }

}

1 个答案:

答案 0 :(得分:0)

我终于可以获得访问令牌了。我的问题首先是上面的代码使用client_id和client_secret作为标题参数。这些需要放在请求的正文中。

我的第二个问题是我使用了错误的内容类型来发送消息。

以下代码对我有用:

URL url = new URL("https://sandbox.dwolla.com/oauth/v2/token");
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("POST");

        conn.setRequestProperty("Content-Type", "application/json");


        conn.setDoInput(true);
        conn.setDoOutput(true);

        String data = "";


    JSONObject jsonObj = new JSONObject();
    jsonObj.put("client_id", "<Your Client ID>");
    jsonObj.put("client_secret", "<Your Client Secret>");
    jsonObj.put("grant_type", "client_credentials");

    data = jsonObj.toString();

    System.out.println("data = " + data);



    byte[] outputInBytes = data.getBytes("UTF-8");
    OutputStream os = conn.getOutputStream();
    os.write( outputInBytes );    
    os.close();


    System.out.println("Message:" + conn.getResponseMessage());


    BufferedReader br = new BufferedReader(new InputStreamReader((conn.getInputStream())));

    String output;
    System.out.println("Output from Server .... \n");
    while ((output = br.readLine()) != null) {
        System.out.println(output);
    }

    conn.disconnect();