denshita
denshita

Reputation: 7

I can't get accessToken via requireTokenSilent @azure/msal-browser

I'm recently trying to get accessToken from AzureADB2C with "acquireTokenSilent Flow". I'm using @azure/msal-browser and my app is React. So, now my code is like this.

    const getTokenRedirect = async (account, apiConfig) => {
        publicClient.acquireTokenSilent({
            scopes: apiConfig.scopes,
            account: account,
            authority: apiConfig.authority,
        }).then(tokenResponse => {
            console.log(tokenResponse);
            setAccessToken(tokenResponse.accessToken);
        }).catch(async (error) => {
            console.log(error);
        });

    }

Then this code response refresh token, not accessToken. I have no idea why acquireTokenSilent didn't response accessToken. I did get idToken from ADB2C. And another sample (msal.js vanilla Sample) got accessToken. So I think B2C setting is correct. My code has some problems.

Does anybody know solution for like this.

Upvotes: 0

Views: 2195

Answers (2)

Stuart Hallows
Stuart Hallows

Reputation: 8953

I'm using @azure/msal-browser version 2.20.0 and am getting an access token now that I have configured the request passed to acquireTokenSilent correctly. Check that any scopes included in the request use the full path name of the scope, not just the short name. In my case I have an API permission which I see in Azure AD B2C is named https://MYAPPNAME.onmicrosoft.com/MYAPPNAME-development/demo.read, so the scope name needs to be set to that long name, not the short version of just demo.read.

Upvotes: 0

Carl Zhao
Carl Zhao

Reputation: 9549

This is caused by the version of msal-browser, and the accessToken cannot be returned in versions after 2.1.0.

It is a known issue of the B2C service currently tracked here, and Microsoft should fix it in the future.

Upvotes: 1

Related Questions