1

CXで公開されたAPIにoauthを使用しようとしていますが、ドキュメントに従いましたが、HTTP「BADREQUEST」エラーが発生します。コードは次のとおりです-

    String method = "POST";
    String code = "";
    NameValuePair[] data = {
                             new NameValuePair("grant_type", "authorization_code"),
                             new NameValuePair("code", code),
                             new NameValuePair("redirect_uri",URLEncoder.encode(CALLBACK_URL, "UTF-8"))              
                            }; 
    String secret = CONSUMER_KEY+":"+CONSUMER_SECRET;
    String encodedSecret = Base64.encodeBase64String(secret.getBytes("UTF-8"));
    org.apache.commons.httpclient.HttpClient httpClient = new org.apache.commons.httpclient.HttpClient();
    PostMethod httpMethod = new PostMethod(ACCESS_TOKEN_ENDPOINT_URL);
    httpMethod.addRequestHeader("Authorization","Basic "+encodedSecret);
    httpMethod.setRequestBody(data);
    System.out.println("HTTP call -- " + method + " " + ACCESS_TOKEN_ENDPOINT_URL);
    httpClient.executeMethod(httpMethod);

ありがとう、ヘマント

4

2 に答える 2

0

CX 開発者 API は廃止されました。ご不便おかけしてすみません。

于 2013-10-28T21:48:00.820 に答える
0

私はあなたのコードの次のわずかな変更をテストしましたが、動作します。あなたはそれを再確認するかもしれません

  1. キーが承認されました (表示されているエラーを考えると、これは問題ではありません)。
  2. 正しい ACCESS_TOKEN_ENDPOINT_URL を使用しています
  3. auth_code 応答とトークン要求の両方で、redirect_uri を同じにしてみてください。

        String method = "POST";
        String authCode = "[AUTH-CODE-HERE]";
        String CONSUMER_KEY="[YOUR-KEY-HERE]";
        String CONSUMER_SECRET="[YOUR-SECRET-HERE]";
        String ACCESS_TOKEN_ENDPOINT_URL="https://api.cx.com/1/oauth/token";
        String REDIRECT_URI="[YOUR-REDIRECT-HERE]";
    
        NameValuePair[] data = {
                new NameValuePair("grant_type", "authorization_code"),
                new NameValuePair("code", authCode),
                new NameValuePair("redirect_uri", REDIRECT_URI)
        };
        String secret = CONSUMER_KEY+":"+CONSUMER_SECRET;
        String encodedSecret = Base64.encodeBase64String(secret.getBytes("UTF-8"));
    
        PostMethod httpMethod = new PostMethod(ACCESS_TOKEN_ENDPOINT_URL);
        httpMethod.addRequestHeader("Authorization","Basic "+encodedSecret);
        httpMethod.setRequestBody(data);
        System.out.println("HTTP call -- " + method + " " + ACCESS_TOKEN_ENDPOINT_URL);
        int responseCode = httpClient.executeMethod(httpMethod);
        System.out.println(responseCode);
        System.out.println(httpMethod.getResponseBodyAsString());
    

問題が解決しない場合は、次の行の結果を投稿していただけますか。 System.out.println(httpMethod.getResponseBodyAsString());

于 2012-08-07T22:13:52.693 に答える