You probably don't need to do it. The token refresh is handled automatically for you, however you can manually trigger a token refresh:
import { createOidc } from "oidc-spa";
const oidc = await createOidc({ ... });
if( oidc.isUserLoggedIn ){
oidc.renewToken();
}
import { useOidc } from "oidc";
import { useEffect } from "react";
function MyComponent(){
const { renewTokens } = useOidc({ assertUserLoggedIn: true });
useEffect(()=> {
renewTokens();
}, []);
return <>...</>;
}
You can also track when the token are being refreshed:
import { createOidc } from "oidc-spa";
const oidc = await createOidc({ ... });
if( !oidc.isUserLoggedIn ){
oidc.subscribeToTokensChange(() => {
console.log("Tokens change", oidc.getTokens());
});
}
import { createReactOidc } from "oidc-spa/react";
export const {
/* ... */
getOidc
} = createReactOidc({ /* ... */ });
getOidc().then(oidc => {
if( !oidc.isUserLoggedIn ){
return;
}
oidc.subscribeToTokensChange(() => {
console.log("Tokens change", oidc.getTokens());
});
});
Or directly in your component:
import { useOidc } from "./oidc";
export function PotectedPage() {
const { oidcTokens } = useOidc({ assertUserLoggedIn: true});
useEffect(()=> {
console.log("Tokens changed", oidcTokens);
}, [oidcTokens]);
// ...
}