我应该如何正确地将社交媒体SSO与我的自定义登录服务集成?

Bil*_*hon 1 android facebook single-sign-on google-plus

我正在尝试将移动应用程序的现有登录系统与一些社交媒体登录解决方案集成.我成功地将Facebook和谷歌+登录与我的应用程序集成,我达到了用户登录的地步,我可以获取他们的社交信息.

但是现在我想知道哪个是最好的方法,以便将决定使用社交媒体帐户的用户与我的本机登录系统集成.我应该使用他们的电子邮件帐户登录,也许在服务器端生成密码?或者也许使用oauth令牌而不是密码?

我需要跟踪我的用户,甚至那些没有正式填写注册表的用户.那么我应该放置什么而不是电子邮件+密码?

Ian*_*ber 10

这可能很棘手 - 大多数情况很简单,但你需要考虑边缘.我觉得将电子邮件/密码视为另一种身份验证机制更容易.你要

  1. 包含有关该用户的核心数据的用户记录(可能是名称,电子邮件地址,应用程序特定的配置文件数据等)
  2. 他们连接的身份验证方法的一系列记录,例如Google+,Facebook,用户/通行证.

连接的身份验证方法可以存储这些方法的相关信息 - 例如,对于Google,它可能是Google用户ID,如果使用离线访问,则可能刷新令牌.这使您可以轻松提供连接多个社交帐户.

密码可能是您要针对原始用户记录存储的特殊情况.在这种情况下,如果有人使用社交登录进行注册,那么您可以生成随机密码,也可以将其保留为空.无论哪种方式,只要您请求用户的电子邮件地址,您可以随时让他们通过忘记密码流(您生成并通过电子邮件发送密码),如果他们想要访问他们的帐户但不再登录他们的3p .

如果可以避免的话,你不想做的就是强迫用户在登录后给你一个新密码.但是,你允许多个登录方法与一个帐户相关联,你可能想要允许它们关联.所以,你的流程可能是:

  • 用户登录(使用3p或电子邮件/通行证)
  • 如果您有该登录方法的记录(例如,匹配Google或Facebook用户ID,匹配电子邮件/通行证组合),请签署该用户,您就完成了.
  • 如果您没有该登录方法的匹配记录:
    1. 查看您是否具有与现有用户帐户匹配的电子邮件地址.如果这样做,某些站点会自动将新登录方法合并到此帐户.如果隐私/安全性更受关注,您可能需要确认用户想要登录该帐户,或者让他们进行一次性验证(例如"看起来您之前已使用密码登录,请立即输入您的密码以关联您的帐户和Google帐户"等等.然后链接帐户并继续,就像登录一样.
    2. 查看您是否拥有可能是该人的帐户.例如,您可能拥有一个匹配名称的帐户.在这种情况下,您可能希望提示用户连接他们的帐户(例如,某个地方提示"您之前是否与Facebook连接?点击此处链接这些帐户",然后让用户通过登录过程进行登录你怀疑他们可能有的方法).
    3. 如果它们看起来全新,请创建一个新的用户记录,并将其视为新注册的.

如果您可以将电子邮件地址视为一个独特字段,则会更加轻松.这意味着,如果某人使用与您已拥有用户的电子邮件地址关联的3p帐户登录,则可能必须强制他们在继续之前链接其帐户.如果他们不想并且您需要一个电子邮件地址,您可以提示他们手动输入一个,然后通过向他们发送电子邮件并让他们确认来正常验证它.

ChrLipp的链接很好,还可以查看在Google Developers网站上一起使用FB和G +的指南:https://developers.google.com/+/best-practices/facebook