使用Facebook登录创建新账户的最佳实践

3
在我的iOS应用中,用户可以手动创建一个帐户(提供电子邮件和密码)。这些信息将被发送到我的网络服务,实际上在我的数据库中创建帐户。
但现在我想在我的应用程序中添加Facebook登录。因此,我正在使用Facebook API连接用户。
我可以通过Facebook API连接用户,但我还需要为他创建一个帐户在我的数据库中(以记住他在应用程序中的偏好和其他内容)。 如何为他创建此帐户?我应该从Facebook存储哪些信息?我的意思是,我可以获取用户ID以将其存储以识别下次他通过Facebook API连接时的用户,但这并不安全,任何知道此ID的人都可以连接。
那么,创建Facebook用户帐户和每次他通过Facebook连接时创建内部会话的最佳实践是什么?
2个回答

2

我只是想在这里提醒一下:

您应该仅将access_token / code发送到后端。在后端,您调用图形API从访问令牌中检索Facebook UID(这就是您在服务器上存储应用程序密码的原因)。之后,根据您的逻辑,您可以检查数据库以查看UID是否已经存在。


1

只是一个想法 - 您可以在数据库中存储用户的Facebook ID,当有人尝试通过FB连接到您的应用程序时,您可以在那一点检索该帐户的FB ID,并将其与存储在您的数据库中的FB ID进行比较,对吗?

即使某个人知道其他人的FB ID,他们实际上也无法做任何事情,因为您不会从用户手动获取FB ID,而是直接从连接到您的应用程序的FB帐户获取。因此,除非某个人还知道该其他人的用户名和密码,否则仅知道ID是没有用处的。我认为这应该没问题。

编辑: 我想你可以尝试这样做。在您的数据库中为每个用户设置两个ID。一个是自动递增的唯一ID,第二个是该用户的Facebook ID(如果他将其FB帐户连接到您的应用程序)。每当需要执行某些操作时,请基于第一个唯一ID执行操作。这样,即使有人知道另一个人的FB ID,他也不会知道第一个唯一ID。

现在,当您需要使用FB ID执行某些操作时,您可以首先验证用户是否已通过FB登录到您的应用程序。如果是,您就可以继续进行,因为现在您知道该人并没有伪造身份。


谢谢您的回答。实际上,仅使用ID可能会有问题,因为即使用户无法通过我的应用程序执行Facebook特定操作,他也可以作为另一个用户连接到我的应用程序并更新个人资料信息和其他内容。 - Fabien Henon
但是我的应用程序如何知道用户的ID呢?我必须通过Web服务将其发送给他,如果这样做,有人可以截获它。然而,我认为无论如何我都会遇到安全问题。实际上,我所做的与您的解决方案接近,似乎是我们能找到的最好的解决方案。我获取用户的fb ID和电子邮件,加密这些信息并使用它们进行登录。 - Fabien Henon
哦,这对我也很有用。谢谢。 - pale_rider
我会将我的解决方案添加到你的方案中。 - Fabien Henon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接