実現したいこと
auth0でgoogle認証で成功した後、Auth0のRulesでエラーになった場合に、エラーメッセージをURL Fragment(Hash)から取得せず、Auth0のBasic認証とどうようにコールバック関数で処理したい。
また、URLにはfragmentをつけないようにしたい。
なお、スマホのブラウザで利用することを想定して、redirectで利用。
現状
google認証成功後、auth0側のUsersにはユーザーが登録されている。
しかし、リダイレクト後の画面では、URL Fragmentにエラーコードがはいっており、window.location.hashで取得してエラーハンドリングしている。
(一方で、Basic認証の場合は、callback関数で処理しており、エラー時の処理が分散している。また、この場合はエラー時もFragmentは空)
Auth0-jsを使用していますが、同じことができればLockでも可です。
Rulesの例
初めてのログインの場合にエラーとする。(サインアップ(=利用規約への同意)を促すため)
javascript
1function (user, context, callback) { 2 user.app_metadata = user.app_metadata || {}; 3 4 // short-circuit if the user signed up already 5 if (user.app_metadata.signed_up) { 6 return callback(null, user, context); 7 } 8 9 return callback(new UnauthorizedError('user_not_exist'));
エラー時のURL(google-oauth2でエラーになった場合)
http://localhost:8100/?error=unauthorized&error_description=user_not_exist#
Angular側のauth.service.ts
typescript
1 loginWithGoogle(): void { 2 this.auth0.authorize({ 3 connection: "google-oauth2", 4 }); 5 }
Angular側のhome.component.ts
※ redirect先のcomponent
typescript
1IonViewWillEnter() { 2 const fragment = window.location.hash; 3 // エラー処理... 4}
Bascic認証の場合(参考): auth.service.ts
typescript
1this.auth0.client.login({ 2 realm: 'Username-Password-Authentication', 3 ,,, 4}, (err, authResult) => { 5 // エラー処理 6});
エラー時のURL(参考): Basic認証
※ Fragment/Hashはなし
http://localhost:8100
利用パッケージ
- Ionic 2 (Webとして使用)
- Angular 2
- auth0-js(ver8.3)・・・redirectを使用。なお、lockは未利用

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。