Java SDK
The official Java library for Connect with rNet and AI requests.
Mavenio.github.rnetai:rnet-oauth:1.0.3· Java 25
Install
xml
<dependency> <groupId>io.github.rnetai</groupId> <artifactId>rnet-oauth</artifactId> <version>1.0.3</version> </dependency>
Create the clients
Use the Client ID and secret from your registered app. The model is chosen when you create the ModelClient.
java
RNetOAuthConfig config = new RNetOAuthConfig(
System.getenv("RNET_CLIENT_ID"),
System.getenv("RNET_CLIENT_SECRET"),
"https://yourapp.com/callback"
);
RNetOAuthClient auth = new RNetOAuthClient(config);
ModelClient ai = new ModelClient(config, "gemini-2.5-flash-lite");Start Connect with rNet
java
PKCEUtil.PKCE pkce = auth.generatePKCE();
String state = UUID.randomUUID().toString();
session.setAttribute("rnet_verifier", pkce.getVerifier());
session.setAttribute("rnet_state", state);
response.sendRedirect(auth.getAuthorizationUrl(pkce.getChallenge(), state));Exchange the code for tokens
java
// GET /callback?code=...&state=...
if (!request.getParameter("state").equals(session.getAttribute("rnet_state"))) {
response.sendError(400);
return;
}
Map<String, Object> tokens = auth.exchangeCodeForToken(
request.getParameter("code"),
(String) session.getAttribute("rnet_verifier")
);
session.setAttribute("rnet_access_token", tokens.get("access_token"));
session.setAttribute("rnet_refresh_token", tokens.get("refresh_token"));Refresh the access token
java
Map<String, Object> tokens = auth.refreshAccessToken(refreshToken);
session.setAttribute("rnet_access_token", tokens.get("access_token"));
session.setAttribute("rnet_refresh_token", tokens.get("refresh_token")); // keep the new oneGet the user profile
java
Map<String, Object> user = auth.getUserInfo(accessToken);
System.out.println(user.get("email"));Call a model
java
Map<String, Object> payload = Map.of(
"contents", List.of(Map.of(
"role", "user",
"parts", List.of(Map.of("text", "Write a haiku about credits."))
))
);
Map<String, Object> response = ai.chat(payload, accessToken);Stream a response
java
try (InputStream in = ai.chatStream(payload, accessToken)) {
in.transferTo(response.getOutputStream());
}Reference