簡體   English   中英

嘗試從Dwolla Restful API獲取訪問令牌

[英]Trying to get an Access Token from Dwolla restful api

我在獲取沙箱環境的訪問令牌時遇到問題。 我按照此指南進行身份驗證: 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);
    }

}

我終於能夠獲得訪問令牌。 我的問題是,首先,以上代碼使用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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM