Reputation: 7
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
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
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