2017-07-20 1 views
2

J'essaie d'utiliser la bibliothèque MSAL dans REDUX pour l'authentification, mais j'ai des problèmes. Lorsque je crée une application et que je fais la même chose, j'obtiens le jeton d'accès avec succès, mais en essayant de l'utiliser dans REDUX, je reçois toujours un délai d'attente pour récupérer le jeton d'accès.Utilisation de MSAL (Microsoft Authentication Library) avec REDUX

function Auth() { 
    var userAgentApplication = new Msal.UserAgentApplication(*my app id*, null, function (errorDes, token, error, tokenType) { 
    // this callback is called after loginRedirect OR acquireTokenRedirect (not used for loginPopup/aquireTokenPopup) 
    }); 

    return new Promise((resolve, reject) => { 
     console.log('inside the promise'); 
     userAgentApplication.loginPopup(["user.read"]).then((token) => { 
      console.log("Successfully got id token"); 
      console.log("first token: ", token); 
      console.log(userAgentApplication.getUser().name); 
      userAgentApplication.acquireTokenSilent(["user.read"]).then((token) => { 
      resolve(token); 
     }, function(error) { 
      reject(error); 
     }); 
    }, function (error) { 
     reject(error); 
    }); 
}); 
} 

C'est le code que j'ai, mais je reçois toujours l'erreur suivante opération de renouvellement Token a échoué en raison de délai d'attente: null Lorsque je tente de le faire en HTML ou réagis seule application, cela fonctionne parfaitement. Toute sorte d'aide serait très appréciée.

Répondre

0

voir si l'ajout d'un «attraper» et si la condition aide à identifier le problème.

function Auth() { 
    return new Promise((resolve, reject) => { 
    const userAgentApplication = new Msal.UserAgentApplication(*my app id*, null, function (errorDes, token, error, tokenType) { 
     // this callback is called after loginRedirect OR acquireTokenRedirect (not used for loginPopup/aquireTokenPopup) 
    }); 

    console.log('inside the promise'); 
    userAgentApplication.loginPopup(["user.read"]) 
    .then((token) => { 
     console.log("Successfully got id token"); 
     console.log("first token: ", token); 
     console.log(userAgentApplication.getUser().name); 

     if (userAgentApplication.getUser()) { 
     userAgentApplication.acquireTokenSilent(["user.read"]) 
     .then((token) => { 
      resolve(token); 
     }) 
     .catch((error) => { 
      reject(error); 
     }); 
     } else { 
     reject("User not logged in"); 
     } 
    }) 
    .catch((error) => { 
     reject(error); 
    }); 
    }); 
}