私は auth0 と Angular 2 の初心者です。アプリの認証と承認に Auth0 を使用しようとしています。認証の初期化に使用するコードの下
@Injectable()
export class Auth {
//Configure Auth0
lock = new Auth0Lock('CLIENT_ID','<myapp>.eu.auth0.com', {
auth: {
params: {
scope: 'openid profile user_metadata app_metadata',
audience: 'https://<myapp>.eu.auth0.com/api/v2/'
}
}
});
userProfile;
constructor(private router: Router) {
this.userProfile = JSON.parse(localStorage.getItem("profile"));
// Add callback for lock `authenticated` event
this.lock.on("authenticated", (authResult) => {
localStorage.setItem('id_token', authResult.accessToken);
console.log(authResult);
this.lock.getUserInfo(authResult.accessToken, (error, profile) => {
if (error) {
console.log("Error:", error);
return;
}
localStorage.setItem("profile", JSON.stringify(profile));
this.userProfile = profile;
});
});
}
プロファイルをログに記録すると、プロファイル json に app_metadata が表示されず、JWT トークンにも表示されません。
配列[5] 0:「サブ」 1:「名前」 2:「ニックネーム」 3:「画像」 4:「updated_at」
ユーザープロファイルから役割を取得するために必要です。
最初に、正しいメタデータを返す getProfile メソッドを使用しましたが、非推奨になると読んだので、 getUserInfo に置き換えましたが、別の方法で動作します。
オーディエンス パラメータを削除すると、authResult にロールなどの app_metadata 情報が含まれていることに気付きましたが、コンソールから「JWT には 3 つの部分が必要です」というエラーが表示されます。
それがどのように機能するかについて、私が理解していないことがあります。
お願いします、誰か助けてくれませんか?ありがとう。