2017-08-30 18 views
1

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リファクタリングされていないこと! ;-)

答えて

1

使用しているMSALのバージョンは何ですか? 0.1.1ではストレージがデフォルトで 'sessionStorage'であり、実際には変更できないという問題があります。その場合、あなたのログインは現在開かれているウィンドウのためだけに保存​​され、新しいブラウザーウィンドウが開かれていてもログインを強制されます。 「localStorage」を使用して、必要なものを達成し、UserAgentApplicationのコンストラクターパラメーターとして渡す必要があります。ここで

は、このために彼らのレポで修正です:

https://github.com/AzureAD/microsoft-authentication-library-for-js/commit/eba99927ce6c6d24943db90dfebc62b948355f19

関連する問題