Stormpath を使用すると、次のようにして、アプリケーションに電子メールが存在するかどうかを確認できます。
application.getAccounts(Accounts.where(Accounts.email().eqIgnoreCase(email)));
ただし、Stormpath Social サインインはディレクトリ ベースであり、他のディレクトリでの重複をチェックしないことに気付きました。
たとえば、電子メール アドレス tunji@gmail.com
を使用して facebook にサインアップしたユーザーがいて、同じユーザーが gmail のままで再度サインアップしようとした場合tunji@gmail.com
、現在、stormpath は両方のユーザーを 2 つの異なるディレクトリ (例: facebook ディレクトリと google) に保存します。ディレクトリ)。これは私が望むものではありません。
tunji@gmail.com
どのディレクトリにも存在する場合、他のディレクトリに登録されないようにしたいと考えています。関連付けられたアカウントは、単純に取得する必要があり、同じユーザーを表す必要があります。
問題は、Stormpath が次の方法でソーシャル サインアップ アカウントを取得することです。
ProviderAccountRequest request = Providers.GOOGLE.account().setAccessToken(token).build();
ProviderAccountResult result = application.getAccount(request);
これが何をするかというと、関連付けられたアカウント オブジェクトに対して指定されたディレクトリ(google)のみをチェックし (アプリケーション全体をチェックするわけではありません)、そのディレクトリ内に何も存在しない場合は、自動的に作成して新しいアカウント オブジェクトを返します。したがって、チェックを行い、アカウントを作成するかどうかを決定する機会を与えない。
ストームパスでこのフローを実現する別の方法はありますか??