我正在尝试将移动应用程序的现有登录系统与某些社交媒体登录解决方案集成。我成功地将Facebook和谷歌+登录与我的应用程序集成,我达到了用户登录的地步,我可以获得他们的社交信息。
但现在我不知道哪个是最好的方法,以便将决定使用社交媒体帐户的用户与我的原生登录系统集成。我应该使用他们的电子邮件帐户登录,也许在服务器端生成密码?或者也许使用oauth令牌而不是密码?
我需要跟踪我的用户,甚至是那些没有正式填写注册表的用户。那么我应该放置什么而不是电子邮件+密码?
答案 0 :(得分:9)
这可能很棘手 - 大多数情况很简单,但你需要考虑边缘。我觉得将电子邮件/密码视为另一种身份验证机制更容易。你想要
连接的auth方法可以存储这些方法的相关信息 - 例如对于谷歌来说,它可能是Google用户ID,如果使用离线访问,可能会刷新令牌。这使您可以轻松提供连接多个社交帐户。
密码可能是您要针对原始用户记录存储的特殊情况。在这种情况下,如果有人使用社交登录进行注册,那么您可以生成随机密码,也可以将其保留为空。无论哪种方式,只要您请求用户的电子邮件地址,您可以随时让他们通过忘记密码流(您生成并通过电子邮件发送密码),如果他们想要访问他们的帐户但不再登录他们的3p 。
如果可以避免的话,你不想做的就是强迫用户在登录后给你一个新密码。但是,你允许多个登录方法与一个帐户关联,你可能想要允许关联它们。所以,你的流程可能是:
如果您可以将电子邮件地址视为一个独特的字段,则会更加轻松。这意味着,如果某人使用与您已拥有用户的电子邮件地址关联的3p帐户登录,则可能必须强制他们在继续之前链接其帐户。如果他们不想并且您需要一个电子邮件地址,您可以提示他们手动输入一个,然后通过向他们发送电子邮件并让他们确认来正常验证它。
ChrLipp的链接很好,另请参阅Google Developers网站上一起使用FB和G +的指南:https://developers.google.com/+/best-practices/facebook
答案 1 :(得分:3)
您是如何实施社交媒体登录的?例如Facebook:您使用Login for Android吗?在这种情况下,文档会在Checking login status:
下说明使用我们的SDK的应用可以检查某人是否已使用内置函数登录。当一个人登录时,所有其他应用程序必须创建自己的存储方式,并且当该指示符不存在时,继续假设它们已被注销。
如果您点击Storing access tokens and login status的链接,您可以阅读:
应该存储令牌,以便在进行API调用时,它可供应用的所有部分使用。 ...如果您正在构建一个...移动应用,那么您应该使用您的应用可用的数据存储。此外,应用程序应将令牌与user_id
一起存储在数据库中以识别它。
有枚举(NativeLogin,Facebook,GooglePlus)并根据此枚举提供以下信息:
在所有情况下,您都应该将您收到的电子邮件地址存储在其他字段中。