我建立了我的Microsoft待办事项任务的小JS应用程序和使用msal.js库,以适应身份验证过程登录。 这工作得很好,我得到一个弹出窗口,我验证我的个人资料,弹出窗口关闭,我的任务出现在我的屏幕上。保持使用msal.js时
但是:似乎不记得我以前认证;每次运行我的webpack应用程序并且页面被引导时,它都会显示弹出窗口并要求进行身份验证。一旦我通过身份验证并刷新了我的页面,它就会向我显示任务,而不再显示弹出窗口。我没有尝试等待一个小时,但我认为这与不正确刷新我的访问令牌有关。我没有涉及Outlook/Microsoft API,我可以真正弄清楚我是否正确使用它。
简而言之:使下一次我开始我的应用我怎样才能一次验证任务的显示,而无需再次认证?
我的初始化函数
this.userAgentApplication = new Msal.UserAgentApplication(microsoftTasksClientId, null, function (errorDes, token, error, tokenType) {
// this callback is called after loginRedirect OR acquireTokenRedirect (not used for loginPopup/aquireTokenPopup)
console.log(token)
})
let user = this.userAgentApplication.getUser()
if (!user) {
const self = this
// this.userAgentApplication = new Msal.UserAgentApplication(microsoftTasksClientId)
this.userAgentApplication.loginPopup([`${this.apiRootUrl}Tasks.readwrite`]).then(function (token) {
self.idToken = token
user = self.userAgentApplication.getUser()
if (user) {
self.getSilentToken()
}
}, function (error) {
console.log(error)
})
} else {
this.getSilentToken()
}
而我getSilentToken功能
const self = this
this.userAgentApplication.acquireTokenSilent([`${this.apiRootUrl}Tasks.readwrite`]).then(function (token) {
console.log('ATS promise resolved', token)
self.accessToken = token
self.getTasks()
}, function (err) {
console.log(err)
})
请不说我的代码是不是重构了! ;-)
您正在使用什么版本的MSAL