2017-09-02 19 views
0

auth0-lock-passwordlessをイオン2+ハイブリッドアプリに統合した人はいますか?Auth0パスワードなしイオン2 +アプリでロック

私はauth.service.tsと呼ばれる角度サービスとしてこのコードを持っているコールバックURL

を処理する方法がわからない:私はAuth0アプリケーションを設定しようとした

import {Storage} from '@ionic/storage'; 
import {AuthHttp, JwtHelper, tokenNotExpired} from 'angular2-jwt'; 
import {Injectable} from '@angular/core'; 
import Auth0LockPasswordless from 'auth0-lock-passwordless' 

@Injectable() 
export class AuthService { 
    private clientID = "XXXXXXXXXXX"; 
    private domain = "myapp.eu.auth0.com"; 
    jwtHelper: JwtHelper = new JwtHelper(); 
    lock: any; 
    local: Storage = new Storage() 
    user: Object; 

    constructor(private authHttp: AuthHttp) { 
    // If there is a profile saved in local storage 
    this.lock = new Auth0LockPasswordless (this.clientID, this.domain) 

    this.local.ready().then(() => { 
     this.local.get('profile').then(profile => { 
      this.user = JSON.parse(profile); 
     }) 
    }).catch(error => { 
     console.log(error); 
    }); 
    } 

    public authenticated() { 
    // Check if there's an unexpired JWT 
    return tokenNotExpired(); 
    } 

    public login() { 
    // Show the Auth0 Lock widget 
    this.lock.emailcode({ 
     responseType: 'code', 
     authParams: { 
     scope: 'openid email', 
     device: 'Mobile device' 
     } 
    }, (err, profile, token, accessToken, state, refreshToken) => { 
     // CALLBACK CODE 
     if (err) { 
     // IF THERE'S AN ERROR, THIS CODE IS EXECUTED 
     alert(JSON.stringify(err)) 
     } else { 
     // IF EVERYTHING GOES FINE, THIS CODE IS NEVER CALLED, IT IS SENT TO A CALLBACK URL 
     this.local.ready().then(() => { 
     alert("profile: " + JSON.stringify(profile)) 
     alert("id_token: " + JSON.stringify(token)) 
     alert("refresh_token: " + JSON.stringify(refreshToken)) 
     alert("state: " + JSON.stringify(state)) 
     alert("err: " + JSON.stringify(err)) 
     this.local.set('profile', JSON.stringify(profile)); 
     this.local.set('id_token', token); 
     this.local.set('refresh_token', refreshToken); 
     this.user = profile; 
     }) 
     } 
    });  
    } 

    public logout() { 
    this.local.ready().then(() => { 
     this.local.remove('profile'); 
     this.local.remove('id_token'); 
     this.local.remove('refresh_token'); 
     this.user = null; 
    }) 
    } 
} 

ネイティブでシングルWebページとして、成功しません。ここで

は私から私のインスピレーションを得た場所からいくつかのウェブサイトです:私は、イオン Deeplinksを使用することができます考えていたコールバックを処理するために

が、その行く前に私はこれが正しい方法であることを確認したかったのです。

逆問題は:ディープリンクとCordovaカスタムURLプラグインの違いは何ですか?

+0

コード表示 – Ivaro18

+0

コードと詳細を追加しました –

答えて

1

最も良い方法は、ホストされたauthページを使用することです。auth0-lock-passwordlessは廃止され、いくつかの問題が発生します。

電子メールパスは、典型的なWebシナリオで新しいコールバックページに戻ります。したがって、トークンで戻ってきているかどうかを確認するライブ認証コールバックページが必要です。これはハイブリッドアプリなので、おそらく回避策があります。 Auth0のサポートは大丈夫ですが、私は彼らがこのようなハイブリッドアプリを考えていないと思います。

複数のログイン方法を使用する場合は、異なるサブアカウントを設定する必要があります。ホストされているページにはコンソール内に特定のjを追加する必要がありますが、そのコードにはもうアクセスできません。

つまり、auth0-lock-passwordlessパスは機能しません。

関連する問題