可以使用 Auth0 客户端库或手动构造请求来从 Auth0 的 /oauth/token 端点获取访问令牌。获取访问令牌后,可以使用它来访问受保护的 API,而无需在每个 API 调用中都要求用户进行身份验证。下面给出一个使用 Java 语言从 Auth0 获取访问令牌的示例:
import com.auth0.*;
import com.auth0.jwt.JWT;
import com.auth0.jwt.interfaces.DecodedJWT;
import com.auth0.jwt.algorithms.Algorithm;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
public class Auth0TokenExample {
public static void main(String[] args) {
String domain = "your-auth0-domain.auth0.com";
String clientId = "your-auth0-client-id";
String clientSecret = "your-auth0-client-secret";
String audience = "your-auth0-api-audience";
String grantType = "client_credentials";
Map payload = new HashMap<>();
Long expiresAt = System.currentTimeMillis() + 3600000; // 1 hour
payload.put("iss", clientId);
payload.put("sub", clientId);
payload.put("aud", audience);
payload.put("exp", expiresAt / 1000);
Algorithm algorithm = Algorithm.HMAC256(clientSecret);
String token = JWT.create()
.withPayload(payload)
.sign(algorithm);
String url = String.format("https://%s/oauth/token", domain);
HttpRequest request = HttpRequest.post(url)
.acceptJson()
.contentType("application/json")
.send("{\"grant_type\":\"" + grantType + "\",\"client_id\":\"" + clientId + "\",\"client_secret\":\"" + clientSecret + "\",\"audience\":\"" + audience + "\"}");
String response = request.body();
JsonObject jsonObject = new JsonObject(response);
String accessToken = jsonObject.get("access_token").asString()
System.out.println("Access Token: " + accessToken);
}
}
以上代码使用了 Auth0 Java 客户端库来构造 JWT