在 Azure B2C 中使用 MSAL AngularJS 时不会调用 tokenReceivedCallback

tokenReceivedCallback is not called when using MSAL AngularJS with Azure B2C

正在做

msalService.loginPopup();

然后:

$rootScope.$on("msal:loginSuccess", function () {
    console.log("loginSuccess");

    var token = msalService.userInfo.idToken;
});

我可以看到 userInfo.isAuthenticated 是真的,并且存在一个 id 令牌。

然而,tokenReceivedCallback 从未被调用。

msalProvider.init({
    clientID: "Client ID here",
    authority: "https://login.microsoftonline.com/tfp/myb2caad.onmicrosoft.com/B2C_1_SignUpSignIn",
    validateAuthority: false,
    //consentScopes: ["https://myb2caad.onmicrosoft.com/test/user_impersonation"],
    tokenReceivedCallback: function (errorDesc, token, error, tokenType) {
        debugger;
        if (token) {
            console.log('Token type: ' + tokenType + ' Token: ' + token)
        }
        else {
            console.log(errorDesc + error)
        }
    }
},
    $httpProvider // Optionally, pass http provider to inject request interceptor to attach tokens
);

你能找出问题所在或给出一些提示在哪里寻找吗?

原来问题与 hashPrefix 有关。该应用程序出现问题。

我必须做的:

app.config(['$locationProvider', function($locationProvider) {
    $locationProvider.html5Mode(false).hashPrefix('');
}]);

hashPrefix 干扰了回调。

这里提到了:https://www.npmjs.com/package/@azure/msal-angularjs