我无法通过 requireTokenSilent @azure/msal-browser 获取 accessToken
I can't get accessToken via requireTokenSilent @azure/msal-browser
我最近尝试使用“acquireTokenSilent Flow”从 AzureADB2C 获取 accessToken。
我正在使用 @azure/msal-browser 并且我的应用程序是 React。
所以,现在我的代码是这样的。
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);
});
}
然后这段代码响应刷新令牌,而不是accessToken。
我不知道为什么 acquireTokenSilent 没有响应 accessToken。
我确实从 ADB2C 获得了 idToken。另一个样本(msal.js vanilla 样本)获得了 accessToken。
所以我认为B2C设置是正确的。我的代码有一些问题。
有没有人知道这样的解决方案。
这是msal-browser版本问题,2.1.0以后的版本无法返回accessToken
这是一个known issue of the B2C service currently tracked here,Microsoft 应该在将来修复它。
我正在使用 @azure/msal-browser 版本 2.20.0 并在我配置后获得访问令牌请求正确传递给 acquireTokenSilent
。检查请求中包含的任何范围是否使用范围的完整路径名,而不仅仅是短名称。在我的例子中,我有一个 API 权限,我在 Azure AD B2C 中看到它被命名为 https://MYAPPNAME.onmicrosoft.com/MYAPPNAME-development/demo.read
,因此范围名称需要设置为那个长名称,而不是 [=12= 的短版本].
我最近尝试使用“acquireTokenSilent Flow”从 AzureADB2C 获取 accessToken。 我正在使用 @azure/msal-browser 并且我的应用程序是 React。 所以,现在我的代码是这样的。
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);
});
}
然后这段代码响应刷新令牌,而不是accessToken。 我不知道为什么 acquireTokenSilent 没有响应 accessToken。 我确实从 ADB2C 获得了 idToken。另一个样本(msal.js vanilla 样本)获得了 accessToken。 所以我认为B2C设置是正确的。我的代码有一些问题。
有没有人知道这样的解决方案。
这是msal-browser版本问题,2.1.0以后的版本无法返回accessToken
这是一个known issue of the B2C service currently tracked here,Microsoft 应该在将来修复它。
我正在使用 @azure/msal-browser 版本 2.20.0 并在我配置后获得访问令牌请求正确传递给 acquireTokenSilent
。检查请求中包含的任何范围是否使用范围的完整路径名,而不仅仅是短名称。在我的例子中,我有一个 API 权限,我在 Azure AD B2C 中看到它被命名为 https://MYAPPNAME.onmicrosoft.com/MYAPPNAME-development/demo.read
,因此范围名称需要设置为那个长名称,而不是 [=12= 的短版本].