private async refreshOAuthToken(): Promise<void> {
const { oauthToken } = useAuthStore.getState()
if (!oauthToken?.refresh_token) {
throw new Error('No refresh token available')
}
const params = new URLSearchParams({
grant_type: 'refresh_token',
refresh_token: oauthToken.refresh_token,
client_id: this.oauthConfig!.clientId,
})
const response = await axiosInstance.post(
'/api/method/frappe.integrations.oauth2.get_token',
params.toString(),
{
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
}
)
const data = response.data
const token: OAuthToken = {
access_token: data.access_token,
token_type: data.token_type,
expires_in: data.expires_in,
expires_at: Date.now() + data.expires_in * 1000,
refresh_token: data.refresh_token
}
console.log(token)
const userInfo = await this.getUserInfo();
const userInfo1 = await this.getUserInfoByEmail(userInfo.message);
const detail = await this.getUserSessionId(userInfo.message)
await useAuthStore.getState().setOAuthToken(token)
await useAuthStore.getState().setCookie(detail.sid)
await useAuthStore.getState().setUser(userInfo1?.user)
}
async ensureValidAccessToken(): Promise<void> {
const auth = useAuthStore.getState()
// No OAuth token → nothing to refresh
if (!auth.oauthToken) return
if (Date.now() < auth.oauthToken.expires_at) return
// Token expired → refresh
await this.refreshOAuthToken()
}
Getting error as {“error”: “invalid client”}. I have cross checked client id is correct though facing issue