有没有办法检查社交登录中是否存在特定电子邮件的Stormpath帐户?

时间:2015-12-14 14:47:24

标签: java stormpath

使用Stormpath,可以通过执行以下操作检查应用程序是否存在电子邮件;

tunji@gmail.com

然而,我注意到Stormpath Social signin是基于目录的,并不检查其他目录中的重复项。

例如,如果有用户使用电子邮件地址 tunji@gmail.com 注册Facebook,则同一用户尝试再次注册时,其gmail仍为 {{1 stormpath目前做的是将两个用户保存在我的两个不同目录中(例如facebook目录和谷歌目录)。这不是我想要的。

我希望能够确保如果 tunji@gmail.com 存在于任何目录中,则不应将其注册到任何其他目录中。应该简单地选择相关的帐户并且应该代表相同的用户。

问题是Stormpath以下列方式检索社交注册帐户;

ProviderAccountRequest request = Providers.GOOGLE.account().setAccessToken(token).build();
ProviderAccountResult result = application.getAccount(request);

这样做只会检查指定目录(google)以查找关联的帐户对象 (它不会检查整个应用程序) < / strong>,如果该目录中不存在,则会自动创建一个并返回新的帐户对象,因此无法进行检查并决定是否应创建帐户。

是否有另一种方法可以在stormpath中实现此流程?

1 个答案:

答案 0 :(得分:4)

开发人员使用Stormpath有几种不同的方式,它完全基于他们的应用程序:

  1. 他们希望应用程序以不同方式对待Google / Facebook /用户名密码身份验证。通过社交方式登录的用户将受到不同的待遇。
  2. 他们希望应用程序对Google / Facebook /用户名密码进行身份验证。通过任何方式登录的用户将被视为同一用户。
  3. 开箱即用,Stormpath支持#1,但我们确实有一些需求大约为#2的客户,他们通过利用Stormpath中的一项称为自定义数据的功能来实现这一目标。使用自定义数据,开发人员可以在Google或Facebook目录与实际主人之间建立单向或双向链接。帐户在另一个目录中。

    这是如何运作的:

    • 用户使用用户名/密码注册您的应用程序,并在云目录中创建帐户。
    • 稍后,用户决定使用Google / Facebook登录
    • 成功登录Facebook或Google后,开发者会从Facebook或Google帐户(由Facebook或Google验证)获取电子邮件地址,并通过云目录中的电子邮件搜索帐户。< / LI>
    • 如果在Cloud目录中找到该帐户,则该帐户的href将存储在Facebook / Google帐户的自定义数据中
    • 在其他登录信息中,您可以在Facebook或Google帐户中查看自定义数据,并按照href查看云目录中的实际帐户。

    我希望这是有道理的。