##エラー概要
こちらの技術書を参考にAWSのサーバレスアーキテクチャの勉強をしているのですが、ログインページの実装が上手くいかない状況です。AWSによるサーバレスアーキテクチャ 5章の認証と認可
若干書籍の情報が古いため現在では非推奨のサービスを使用しているのも原因だと思われるですが、どこが古く代替手段がなんなのかわからずに詰まっている状態です。
Auth0 Lockの設定を行っている以下のコードが原因だと思うのですが、修正箇所が皆目見当がつきません。
###コード一覧
JavaScript
1var userController = { 2 data: { 3 auth0Lock: null, 4 config: null 5 }, 6 uiElements: { 7 loginButton: null, 8 logoutButton: null, 9 profileButton: null, 10 profileNameLabel: null, 11 profileImage: null 12 }, 13 init: function(config) { 14 var that = this; 15 16 this.uiElements.loginButton = $('#auth0-login'); 17 this.uiElements.logoutButton = $('#auth0-logout'); 18 this.uiElements.profileButton = $('#user-profile'); 19 this.uiElements.profileNameLabel = $('#profilename'); 20 this.uiElements.profileImage = $('#profilepicture'); 21 22 this.data.config = config; 23 this.data.auth0Lock = new Auth0Lock(config.auth0.clientId, config.auth0.domain, { 24 //code omitted for brevity 25 configurationBaseUrl: config.clientConfigurationBaseUrl, 26 overrides: { 27 __tenant: config.auth0Tenant, 28 __token_issuer: config.authorizationServer.issuer 29 }, 30 //code omitted for brevity 31 }); 32 33 var idToken = localStorage.getItem('userToken'); 34 35 if (idToken) { 36 this.configureAuthenticatedRequests(); 37 this.data.auth0Lock.getProfile(idToken, function(err, profile) { 38 if (err) { 39 return alert('There was an error getting the profile: ' + err.message); 40 } 41 that.showUserAuthenticationDetails(profile); 42 }); 43 } 44 45 this.wireEvents(); 46 }, 47 configureAuthenticatedRequests: function() { 48 $.ajaxSetup({ 49 'beforeSend': function(xhr) { 50 xhr.setRequestHeader('Authorization', 'Bearer ' + localStorage.getItem('userToken')); 51 } 52 }); 53 }, 54 showUserAuthenticationDetails: function(profile) { 55 var showAuthenticationElements = !!profile; 56 57 if (showAuthenticationElements) { 58 this.uiElements.profileNameLabel.text(profile.nickname); 59 this.uiElements.profileImage.attr('src', profile.picture); 60 } 61 62 this.uiElements.loginButton.toggle(!showAuthenticationElements); 63 this.uiElements.logoutButton.toggle(showAuthenticationElements); 64 this.uiElements.profileButton.toggle(showAuthenticationElements); 65 }, 66 wireEvents: function() { 67 var that = this; 68 69 this.uiElements.loginButton.click(function(e) { 70 var params = { 71 authParams: { 72 scope: 'openid email user_metadata picture' 73 } 74 }; 75 76 that.data.auth0Lock.show(params, function(err, profile, token) { 77 if (err) { 78 // Error callback 79 alert('There was an error'); 80 } else { 81 // Save the JWT token. 82 localStorage.setItem('userToken', token); 83 that.configureAuthenticatedRequests(); 84 that.showUserAuthenticationDetails(profile); 85 } 86 }); 87 }); 88 89 this.uiElements.logoutButton.click(function(e) { 90 localStorage.removeItem('userToken'); 91 92 that.uiElements.logoutButton.hide(); 93 that.uiElements.profileButton.hide(); 94 that.uiElements.loginButton.show(); 95 }); 96 97 this.uiElements.profileButton.click(function(e) { 98 var url = that.data.config.apiBaseUrl + '/user-profile'; 99 100 $.get(url, function(data, status) { 101 alert(JSON.stringify(data)); 102 }) 103 }); 104 } 105}
分からないことだらけで質問の仕方もめちゃくちゃになってしまいましたが、原因がわかる方がいましたらご教授お願い致します。
えーと、回答者に契約して試して問題を出力して回答しろと?
あなたの回答
tips
プレビュー