FormidableLabs / FormidableLabs/react-native-app-auth

Unable to get accessToken in offline mode returning "null"?

Open
#997 3 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
2.3k
Forks
473
PR merge metrics
No merged PRs in 30d

Description

## In offline mode, the Access token returns null even added the "offline_access" in the scope

Here the scope

API_ACCESS_SCOPE: [
'offline_access',
'api://xxxxxxxxxxxxxxxxxx/api-access',
],

getAzureApiAccessConfig() {
return {
issuer: `${MS_BASE_API_URL}${TENANT_ID}/v2.0`,
clientId: APP_ID,
redirectUrl: REDIRECT_URL,
scopes: API_ACCESS_SCOPE,

// additionalParameters: {prompt: 'select_account'},
serviceConfiguration: {
authorizationEndpoint: `${MS_BASE_API_URL}${TENANT_ID}/oauth2/v2.0/authorize`,
tokenEndpoint: `${MS_BASE_API_URL}${TENANT_ID}/oauth2/v2.0/token`,
revocationEndpoint: `${MS_BASE_API_URL}${TENANT_ID}/oauth2/v2.0/logout`,
},
};
}


async getAccessTokenAsync() {
try {
const userInfo = await this.getUserInfo();

const expireTime = userInfo.apiAccessTokens
? userInfo.apiAccessTokens.expiryTime
: null;

console.log('expireTime :>> ', expireTime);

if (expireTime !== null) {
// Get expiration time - 5 minutes

// If it's <= 5 minutes before expiration, then refresh

const expire = sub(parseISO(expireTime), {minutes: 5});

const now = new Date();

console.log(
'Expire comparison :>> ',

expire,

now,

compareAsc(now, expire),
);

if (compareAsc(now, expire) >= 0) {
// Expired, refresh

console.log('Refreshing token');

const refreshToken = userInfo.apiAccessTokens
? userInfo.apiAccessTokens.refreshToken
: null;

console.log(`Refresh token: ${refreshToken}`);

const result = await refresh(this.getAzureApiAccessConfig(), {
refreshToken: refreshToken || '',
});

if (!result?.accessToken) {
await this.logOut();

return null;
}

// Store the new access token, refresh token, and expiration time in storage

await SECURE_STORAGE.saveData(KEY_AUTH_USER_INFO, {
...userInfo,

apiAccessTokens: {
accessToken: result.accessToken,

refreshToken: result.refreshToken ?? '',

expiryTime: result.accessTokenExpirationDate,
},
});

return result.accessToken;
}

// Not expired, just return saved access token

const accessToken = userInfo.apiAccessTokens
? userInfo.apiAccessTokens.accessToken
: null;

return accessToken;
}

return null;
} catch (error) {
console.log('error while fetching access token :>> ', error);

await this.logOut();

return null;
}
}

please help me what's went wrong?

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.