We are introducing automatic token retrieval and refreshing in the OAuth 2.0 grant types.
Details
SDKs now have automated auth-token retrieval or refreshing feature prior to any API call necessitating OAuth 2.0 Grant Type.
What's New?
Earlier, it was user's responsibility to fetch/refresh the auth-token and update the SDK client with newly fetched auth-token.
Now, after configuring OAuth 2.0 grant type credentials in the SDK client, the SDK handles this automatically before making any API call that requires an auth-token.
This feature is currently limited to only Java and TS SDKs using OAuth 2.0 client credentials grant type.
The SDK automatically retrieves or refreshes the auth-token from the auth server if it's expired or undefined by default.
For those wanting a custom auth-token provider, you can register a hook to supply the auth-token from a unique source. Additionally, you can register for the auth-token update event, which triggers whenever the auth-token is updated.
Here's how to set up callbacks in the client for the auth-token provider and auth-token update event.
- Java
- TypeScript
SDKClient client = new SDKClient.Builder()
.clientCredentialsAuth(new ClientCredentialsAuthModel.Builder(
"OAuthClientId",
"OAuthClientSecret"
)
.oAuthTokenProvider((lastOAuthToken, credentialsManager) -> {
// Add the callback handler to provide a new OAuth token
// It will be triggered whenever the lastOAuthToken is null or expired
OAuthToken token = loadTokenFromDatabase();
if (token == null) {
return credentialsManager.fetchToken();
}
return token;
})
.oAuthOnTokenUpdate(oAuthToken -> {
// Add the callback handler to perform operations like save to DB or file etc.
// It will be triggered whenever the token gets updated
saveTokenToDatabase(oAuthToken);
})
.build())
.build();
const client = new SDKClient({
clientCredentialsAuthCredentials: {
oAuthClientId: 'OAuthClientId',
oAuthClientSecret: 'OAuthClientSecret',
oAuthTokenProvider: (lastOAuthToken: OAuthToken | undefined, authManager: ClientCredentialsAuthManager) => {
// Add the callback handler to provide a new OAuth token
// It will be triggered whenever the lastOAuthToken is undefined or expired
var token = loadTokenFromDatabase();
if (token === undefined) {
return authManager.fetchToken();
}
return token;
},
oAuthOnTokenUpdate: (token: OAuthToken) => {
// Add the callback handler to perform operations like save to DB or file etc.
// It will be triggered whenever the token gets updated
saveTokenToDatabase(token);
}
},
});