0

認証コードをアクセス トークンに変換しようとすると、"BAD REQUEST" (400) と空の応答本文が返されます。

これが私のコードです:

    Scanner in = new Scanner(System.in);
    HttpClient client = new HttpClient();

    PostMethod post = new PostMethod("https://login.uber.com/oauth/token");

    post.setRequestHeader("Content-Type", URLEncoder.encode("application/x-www-form-urlencoded", "UTF-8"));

    post.setParameter("grant_type",URLEncoder.encode("authorization_code", "UTF-8"));
    post.setParameter("client_id",URLEncoder.encode("mq_LxaL0P-Kn8Wq3TmuhztFkOhISxReq", "UTF-8"));
    post.setParameter("client_secret",URLEncoder.encode("MY_SECRET", "UTF-8"));
    post.setParameter("redirect_uri",URLEncoder.encode("https://jfpmrvbais.localtunnel.me/TaxyNow/webresources/generic", "UTF-8"));
    post.setParameter("code", URLEncoder.encode("S9UOTmXLGp20GF6y7TFf9pw5Pkekrl", "UTF-8"));


    client.executeMethod(post);
    String responseBody = post.getResponseBodyAsString();
    String statusCode= post.getStatusText();

UBER 関連ドキュメント

私は2日間解決策を探しています。さらに、stackoverflow で同様の質問をすべてチェックしましたが、何も見つかりませんでした。

どうもありがとう

編集: 問題は解決しました。以下は作業コードです:

       HttpClient client = new HttpClient();
    PostMethod post = new PostMethod("https://login.uber.com/oauth/token");
    post.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    post.setRequestHeader("Accept", "application/json");
    post.setParameter("client_secret",MY_SECRET);
    post.setParameter("client_id",clientId);
    post.setParameter("grant_type", "authorization_code");
    post.setParameter("redirect_uri", REDIRECT_URL);
    post.setParameter("code", code);

重要なことの 1 つは、前のリクエストで挿入したものと同じ redirect_url を挿入するように求められることです。

4

1 に答える 1

0

OAuth を処理するライブラリを試しましたか? ドキュメントには、「事前に構築されたライブラリを使用して許可とトークンの交換を実行することをお勧めします」https://developer.uber.com/v1/auth/と記載されています。私もいくつかの問題に直面していますが、少なくとも 400 は返ってきません :-)。

マット

于 2015-06-15T06:03:50.050 に答える