Microsoft ToDoタスク用の小さなJSアプリケーションを作成し、msal.jsライブラリを使用して認証プロセスに対応します。 これは完全にうまく動作し、ポップアップが表示され、プロファイルを認証し、ポップアップが閉じられ、自分のタスクが画面に表示されます。msal.jsを使用してログインしたままにする
しかし、私が以前に認証したことは覚えていないようです。 Webpackアプリを起動してページが起動するたびに、ポップアップが表示され、認証が求められます。一度私は認証して、私のページを更新するだけで、それはポップアップを再度表示せずに私にタスクを示しています。私は1時間待つことを試みなかったが、私はそれが私のアクセストークンを適切にリフレッシュしないことと関係があると思う。私はそれが正しく使用しているかどうかを実際に把握できるOutlook/Microsoft APIに関与しているわけではありません。
一言で言えば、次回私がアプリケーションを起動したときに、認証をやり直すことなくタスクが表示されるように、一度認証するにはどうすればよいですか?
私のinit関数
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)
})
してくださいではない私のコードは、AT ALLリファクタリングされていないこと! ;-)