SDKs

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 one

Get 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());
}