auth0を認証に使用する角度2のアプリがあります。問題は、ログインが成功すると、ロックコールバックが呼び出されていないように見えるということです。ページを手動で更新した後でのみ、プロファイルデータがローカルストレージに送信されます。ログイン後にauth0コールバックでプロフィールの日付が設定されていませんangular2
ユーザーがログインすると、そのプロファイルオブジェクトを取得してコンポーネントクラス内で使用する必要があります。このコードは、ログインに成功した後に手動でページを更新した後にのみ機能します。ここに私のコードは(重要な部分だけを含む)です。 documentation for ngOnInit
によると
auth.service
lock = new Auth0Lock('.....9cNzyzJ3DZc2VpDyXSYF5', '.....12.auth0.com', {});
user: any;
constructor() {
// Add callback for lock `authenticated` event
this.user = JSON.parse(localStorage.getItem('profile'));
this.lock.on("authenticated", (authResult:any) => {
this.lock.getProfile(authResult.idToken, function(error: any, profile: any){
if(error){
throw new Error(error);
}
localStorage.setItem('id_token', authResult.idToken);
localStorage.setItem('profile', JSON.stringify(profile));
this.user = profile;
});
});
}
public login() {
// Call the show method to display the widget.
this.lock.show();
console.log('login func');
};
nav.component
constructor(private auth: Auth, private groupsService: GroupsService){
}
ngOnInit(){
// need to access the profile object here. Ocject is correctly logged only after refreshing.
console.log(JSON.parse(localStorage.getItem('profile')));
this.groupsService.getGroups(this.userId).subscribe(groups => {
this.groups = groups;
// sort the groups
this.groups.sort((a, b) => new Date(b.date_created).getTime() - new Date(a.date_created).getTime());
});
}
ねえ同じ問題があります。これをどうやって解決しましたか? – wuno