0

認証プロセスのステップ 2 のリクエストを送信しようとすると、リクエストをhttps://hamill-murazik-and-johnston6698.myshopify.com/admin/oauth/access_tokenに送信するときに http 400 エラーが発生します。

ステップ 1 を通過して一時コードを取得できます。しかし、client_id、client_secret、およびコードを送信しようとすると、http 400 エラーが返されます。

コードを以下に示します

public static void runTest() {
    // TODO Auto-generated method stub
    try{
    URL url = new URL("https://hamill-murazik-and-johnston6698.myshopify.com/admin/oauth/access_token");           
     HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
     String urlParameters = URLEncoder.encode("client_id", "UTF-8") + "=" + URLEncoder.encode("<CLIENT_ID", "UTF-8");
     urlParameters += "&" + URLEncoder.encode("client_secret", "UTF-8") + "=" + URLEncoder.encode("<CLIENT_SECRET", "UTF-8");
     urlParameters += "&" + URLEncoder.encode("code", "UTF-8") + "=" + URLEncoder.encode("15f01c0d8b235ffb63234c1c48822432", "UTF-8");


     /*connection.setDoInput(true);
     connection.setDoOutput(true);
     connection.setUseCaches(false);
     connection.setAllowUserInteraction(false);
     connection.setRequestProperty("Content-Length", Integer.toString(102454));
     connection.setRequestProperty("Content-Type", "text/plain");*/

     connection.setUseCaches(false);
     connection.setAllowUserInteraction(false);
     connection.setDoOutput(true);
     connection.setRequestProperty("Content-Length", "" + Integer.toString(urlParameters.getBytes().length));

     DataOutputStream wr = new DataOutputStream(connection.getOutputStream ());
     wr.writeBytes(urlParameters);
     wr.flush();
     wr.close();


        BufferedReader in = new BufferedReader(
                new InputStreamReader(
                connection.getInputStream()));
        String decodedString;
        while ((decodedString = in.readLine()) != null) {
        System.out.println(decodedString);
        }
        in.close();

    }catch(Exception e){
        e.printStackTrace();

    }


}
4

1 に答える 1

0

Apache HttpClient ライブラリなどの実際の HTTP クライアント ライブラリを使用することをお勧めします。リクエストに何かが欠けているか、何かが間違ってエンコードされている可能性が高いです。

ライブラリは、操作するためのより単純なインターフェイスも提供するため、HTTP パラメーターのキー値パラメーターなどを渡すだけで機能します。

また、承認リクエストを URL パラメータに追加しているようです。そのリクエストに対して POST リクエストを行う必要があります。現在の実装では、それを Body で送信する必要がありますが、これはプレーンな Java では扱いにくい場合があります。

HttpClient ライブラリを使用することを強くお勧めします。それが役に立ったかどうかをお知らせください。

于 2012-10-26T15:48:37.263 に答える