我正在开发一款应用程序,其中包括Facebook和Google的登录选项以及传统的电子邮件+密码登录。我在考虑使用第三方API进行登录时遇到了几个问题:
1. 由于一个用户可能会使用他的Facebook帐户登录,然后决定退出并使用他的Google帐户登录,所以用户应该通过他的电子邮件地址来识别。因此,每当他使用不同的帐户登录时,系统会在数据库中搜索电子邮件地址,并且如果找到,则将此新登录附加到先前创建的帐户上。请确认这一点。
2. 如果用户使用Facebook登录,则可以获取accessToken、userId、user e-mail等信息。那么最安全的认证用户的方法是什么?我应该直接将他的Facebook accessToken和e-mail地址发送到服务器吗?服务器应该检查accessToken是否真的存在于Facebook中吗?生成应用程序私有访问令牌的最佳和最安全方式是什么?我听说过MD5哈希...那么我应该仅使用服务器端生成的这个新访问令牌进行API调用,而不使用任何Facebook凭据吗?或者应该使用Facebook凭据,并将它们保存在服务器/客户端端吗? 我将使用Java App-engine作为我的应用程序服务器端。
3. 如果用户在Facebook上删除了他的帐户,该怎么办?应用程序如何知道这一点?如果无论如何都知道,该怎么处理该帐户?
- 我应该定期检查访问令牌是否仍然有效吗?为什么、如何和多久检查一次?
我不确定我是否在正确的地方提问。如果我错了,请将我重定向到正确的方式,也许有关这些最佳实践的链接?到目前为止,我没有找到任何能回答所有问题的东西。我猜这既与编码有关,也与安全有关。 感谢你们所有的技巧和提示。