Javaのoauth2認証トークンを使用してAPIにアクセスしようとしています
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost post = new HttpPost(http://res-api");
post.setHeader("Content-Type","application/json");
post.setHeader("Authorization", "Bearer " + finalToken);
JSONObject json = new JSONObject();
// json.put ...
// Send it as request body in the post request
StringEntity params = new StringEntity(json.toString());
post.setEntity(params);
HttpResponse response = httpclient.execute(post);
httpclient.getConnectionManager().shutdown();
これは401を返します。
同等のcurlコマンドは、同じトークンで問題なく機能します。
curl -H "Content-Type:application/json" -H "Authorization:Bearer randomToken" -X POST -d @example.json http://rest-api
リクエストをログアウトしようとしましたが、認証が正しく設定されているようです
DEBUG [2016-06-28 20:51:13,655] org.Apache.http.headers: >> Authorization: Bearer authRandomToKen; Path=/; Domain=oauth2-server; Expires=Wed, 29 Jun 2016 20:51:13 UTC
この同じトークンをコピー&ペーストしてcurlコマンドを試してみましたが、うまくいきません。
私もこの行を見ますが
DEBUG [2016-06-28 20:51:13,658] org.Apache.http.impl.client.DefaultHttpClient: Response contains no authentication challenges
Javaを使用してHTTP呼び出しを行おうとして、ベアラートークンOAuth2.0を渡したいと思っていました。私は次の方法でそれを行うことができました、これが他の人を助けることを願っています。
import Java.io.BufferedReader;
import Java.io.InputStreamReader;
import Java.net.HttpURLConnection;
import Java.net.URL;
public class HttpURLConnectionExample {
public static void main(String[] args) throws Exception {
// Sending get request
URL url = new URL("http://example-url");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestProperty("Authorization","Bearer "+" Actual bearer token issued by provider.");
//e.g. bearer token= eyJhbGciOiXXXzUxMiJ9.eyJzdWIiOiPyc2hhcm1hQHBsdW1zbGljZS5jb206OjE6OjkwIiwiZXhwIjoxNTM3MzQyNTIxLCJpYXQiOjE1MzY3Mzc3MjF9.O33zP2l_0eDNfcqSQz29jUGJC-_THYsXllrmkFnk85dNRbAw66dyEKBP5dVcFUuNTA8zhA83kk3Y41_qZYx43T
conn.setRequestProperty("Content-Type","application/json");
conn.setRequestMethod("GET");
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String output;
StringBuffer response = new StringBuffer();
while ((output = in.readLine()) != null) {
response.append(output);
}
in.close();
// printing result from response
System.out.println("Response:-" + response.toString());
}
}