使用 Stormpath,可以通过执行以下操作来检查应用程序是否存在电子邮件;
application.getAccounts(Accounts.where(Accounts.email().eqIgnoreCase(email)));
然而,我注意到的是 Stormpath Social 登录是基于目录的,并且不会检查其他目录中的重复项。
例如,如果有一个用户使用电子邮件地址在 facebook 上注册 tunji@gmail.com
,然后同一用户尝试在他的 gmail 仍然存在的情况下再次注册tunji@gmail.com
,stormpath 当前所做的是将两个用户保存在我的两个不同目录中(例如 facebook 目录和 google目录)。这不是我想要的。
我希望能够确保如果tunji@gmail.com
存在于任何目录中,则永远不应将其注册到任何其他目录中。应该简单地选择关联的帐户并且应该代表相同的用户。
问题是 Stormpath 通过以下方式检索社交注册帐户;
ProviderAccountRequest request = Providers.GOOGLE.account().setAccessToken(token).build();
ProviderAccountResult result = application.getAccount(request);
这样做是它只检查指定目录(google)是否有关联的帐户对象(它不检查整个应用程序),如果该目录中不存在,它会自动创建一个并返回新的帐户对象,因此没有机会进行检查并决定是否应该创建帐户。
有没有另一种方法可以在stormpath中实现这种流动?