最佳实践(最适合Android):使用Facebook或Google登录验证用户身份

 hyc_erasme 发布于 2023-01-01 04:44

我正在开发一个具有Facebook和Google选项的应用程序,用于登录,以及经典的电子邮件+密码登录.关于使用第三方API登录的几个问题,我对此感到疑惑:

1.由于一个用户可以使用他的Facebook帐户登录,然后决定退出并使用他的Google帐户登录,因此用户应该通过他的电子邮件地址进行识别.因此,每当他使用其他帐户登录时,都会在数据库中搜索电子邮件地址,如果找到,则会将此新登录信息附加到之前创建的帐户.请批准这一点.

2.如果用户使用Facebook登录登录,您可以获得accessToken,userId,用户电子邮件等.对用户进行身份验证的最佳做法是什么,这仍然是最安全的方式?我应该将他的facebook accessToken和电子邮件地址直接发送到服务器吗?如果服务器检查Facebook,Facebook上是否真的存在accessToken?在服务器端生成应用程序专用访问令牌的最佳和最安全的方法是什么?我听说过有关MD5哈希的问题......我是否应该在API调用中仅使用这个新生成的访问令牌而不使用任何facebook凭据?或者我应该使用Facebook凭据,从而将它们保存在服务器/客户端?我将在我的应用程序的服务器端使用Java App-engine.

3.如果用户在Facebook上删除了他的帐户怎么办?该应用程序将如何知道这一点?如果它无论如何都知道它,该怎么办?

    如果仍然有效,我是否应定期检查访问令牌?为什么,如何以及如何经常?

我不确定我是否在正确的地方提问.如果我错了,请以我应该去的方式重定向我,也许这些最佳实践的一些链接?到目前为止,我还没有发现任何可以回答我所有问题的内容.我想这与编码和安全相关.感谢您提供的所有提示和技巧.

1 个回答
  • 经过一番阅读并询问我是否已达到此目的:

    1.是的,如果您希望您的用户使用他们的Facebook或Google帐户注册,您可以调用API,获取电子邮件地址(使用Android上的Google AccountManager更加容易),将其发送到您的服务器将保存电子邮件地址,关联用户ID并生成自己的访问代码.访问代码将被发送回您的客户端应用程序以存储它以供以后使用.每当用户想要进行某些操作时,将使用用户的电子邮件地址和访问代码调用服务器API,您可以确定它确实是用户.从外部调用API并且正确地猜测电子邮件地址和访问代码是非常困难的,因此它有点安全.

    2.由于Facebook登录仅用于验证用户,这意味着仅验证用户是否存在并拥有帐户,因此我们实际上不需要FB accessToken.我们需要FB accessToken仅用于Facebook服务器的API调用,因此例如当我们想要检索用户朋友列表等时.在这种情况下,您可以获取Facebook SDK提供的活动会话,并从那里获取accessToken.

    这个案子再次非常简单.如果您仅使用Facebook登录来验证用户身份,则无论用户以后是否删除其帐户,您都不在乎.首次登录后,您保存他的电子邮件地址,可能是图片,不再关心他的Facebook个人资料.如果您使用Facebook登录获取朋友列表等,则无论如何都不会将此类数据保留在本地存储中,因此一旦用户删除了他的帐户,他也会丢失他的朋友列表.或者,您可以保留他的好友列表并尝试在每次使用您的应用时更新它,并且一旦他删除了他的帐户,该好友列表就会停止更新,并且再次由您的用户决定不使用Facebook帐户.最后的想法宁愿适合游戏应用程序用例....只是一个想法,而不是任何官方认为最好的.

    2023-01-01 05:09 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有