我正在构建一个允许用户使用Facebook,Twitter或Google登录的应用/ API。我想知道允许这些用户使用同一帐户登录API的最佳做法是什么。
答案 0 :(得分:1)
我正在做同样的事情,我的解决方案是匹配从这些相应的API获得的电子邮件地址。
对于Facebook,您需要最终用户的特殊许可才能获得在那里注册的电子邮件地址。您可以通过将&scope=email
添加到第一个oauth请求来执行此操作。
缺点是您需要获得最终用户的此许可,他们可能会拒绝。另一个缺点是用户需要为Google,Facebook和Twitter使用相同的电子邮件地址。
优点是用户记录会自动合并,因此用户可以在第一次通过Google登录时直接访问所有数据,第二次通过Facebook登录。
另一种方法是,当他们已经通过Facebook登录时,通过让他们登录Google来手动合并他们的数据。然后,您可以得出结论,即使他们使用不同的电子邮件地址,他们也是同一个用户。但这是一种更乏味的方法,因为您仍然需要合并来自两个帐户的应用程序的用户数据。
答案 1 :(得分:0)
您的第一个解决方案就是我的方式。由于我的所有其他服务都是无状态服务,因此访问令牌位于标头中,并在每个请求中由Spring安全验证过滤器进行解析。我使用带有spring-security-oauth插件的grails服务器。我们还运行一个网站,允许使用会话cookie进行基于浏览器的访问。