是否可以使用普通 Java 的 okHttp 客户端发出 OAuth2 请求
Is it possible to do a OAuth2 request with okHttp client with plain Java
我尝试将 api 与 OAuth2 结合使用。与邮递员一起工作。
但是现在我尝试在 Java 中写这个。我没有 spring 引导,它是一个简单的 Maven 项目
我找到的唯一例子是这个
但它似乎只适用于基本身份验证。
很奇怪我只找到 Android 个例子,没有 Java 个例子
我的问题是,是否可以使用 okhttp 执行 Oauth2?还是放错库了?
所以我的解决方案是生成 post 获取令牌的请求
private static void postCall() throws IOException {
// Create a new HTTP client
OkHttpClient client = new OkHttpClient()
.newBuilder()
.build();
// Create the request body
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.Companion.create("password=yourPassword&grant_type=password&client_id=yoirClientId&username=yourUserName",mediaType);
// Build the request object, with method, headers
Request request = new Request.Builder()
.url("https://your-address-to-get-the-token/openid-connect/token")
.method("POST", body)
.build();
// Perform the request, this potentially throws an IOException
Response response = client.newCall(request).execute();
// Read the body of the response into a hashmap
Map<String, Object> responseMap = new ObjectMapper().readValue(response.body().byteStream(), HashMap.class);
// Read the value of the "access_token" key from the hashmap
String accessToken = (String) responseMap.get("access_token");
//System.out.println(responseMap.toString());
// Return the access_token value
System.out.println("accessToken " + accessToken);
request = new Request.Builder()
.url("https://your-endpoint-rest-call")
.method("GET", null)
.addHeader("Authorization", "Bearer " + accessToken)
.build();
response = client.newCall(request).execute();
System.out.println("Response" + response.body().string());
}
我尝试将 api 与 OAuth2 结合使用。与邮递员一起工作。 但是现在我尝试在 Java 中写这个。我没有 spring 引导,它是一个简单的 Maven 项目 我找到的唯一例子是这个
但它似乎只适用于基本身份验证。 很奇怪我只找到 Android 个例子,没有 Java 个例子
我的问题是,是否可以使用 okhttp 执行 Oauth2?还是放错库了?
所以我的解决方案是生成 post 获取令牌的请求
private static void postCall() throws IOException {
// Create a new HTTP client
OkHttpClient client = new OkHttpClient()
.newBuilder()
.build();
// Create the request body
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.Companion.create("password=yourPassword&grant_type=password&client_id=yoirClientId&username=yourUserName",mediaType);
// Build the request object, with method, headers
Request request = new Request.Builder()
.url("https://your-address-to-get-the-token/openid-connect/token")
.method("POST", body)
.build();
// Perform the request, this potentially throws an IOException
Response response = client.newCall(request).execute();
// Read the body of the response into a hashmap
Map<String, Object> responseMap = new ObjectMapper().readValue(response.body().byteStream(), HashMap.class);
// Read the value of the "access_token" key from the hashmap
String accessToken = (String) responseMap.get("access_token");
//System.out.println(responseMap.toString());
// Return the access_token value
System.out.println("accessToken " + accessToken);
request = new Request.Builder()
.url("https://your-endpoint-rest-call")
.method("GET", null)
.addHeader("Authorization", "Bearer " + accessToken)
.build();
response = client.newCall(request).execute();
System.out.println("Response" + response.body().string());
}