我无法通过 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= 的短版本].