2014-03-03 18 views
0

我希望为应用程序的用户提供注册/登录Facebook或创建帐户的机会。我知道我可以得到用户的Facebook帐户电子邮件地址,以及他们的名字和姓氏。除了密码之外,这基本上是创建“本地”应用帐户的唯一信息。如何确保该人在另一台设备上登录Facebook,并确保他们的两台设备链接到同一个“本地”帐户? (即如果他们选择使用2台设备在Facebook上登录,我只希望在该服务器上为该用户创建一个本地帐户)。如何在iOS应用程序中结合本地用户和Facebook用户

理想情况下,我希望两者的登录方案相同。因此,如果该用户使用Facebook登录,我可以(安全地)检查FB帐户是否链接到“本地”帐户,并自动登录该设备,而无需输入密码。这可能吗?

编辑:'本地'用户将被存储在我的服务器上的数据库中,并且前端将以Python的方式与该应用程序的API一起运行。请注意,“本地”只是指它使用我的应用程序Web服务而不是外部社交网络。

回答

0

你可以做到这一点,按您的用户数据库中以下:

假设你存储在名为userinfo表中的用户数据,该表应包含用户的电子邮件,名字等。

在此表中添加名为fbemail的另一列。

如果用户使用网络服务登录,他的电子邮件将被保存在电子邮件字段&的fbemail应该为空,如果使用FB登录,则两个电子邮件都应该是提取的电子邮件。

当用户使用FB登录时,检查fbemail字段,如果没有找到,那么这是一个新用户,添加他的数据,如果没有,那么这是一个返回用户,不需要添加他的数据。

+0

我在这里担心的是安全性 - 如果他们在Facebook上登录并且使用他们的公共FB电子邮件/ ID,那么阻止某人使用相同的身份验证方案来传递他人的Facebook ID并获得会话令牌? –

+0

除了通过FB认证之外,没有人能做到这一点,如果FB认证用户,你应该相信他们的回应。 – MuhammadBassio

+0

该应用程序需要我的服务器上的端点根据Facebook电子邮件创建/验证用户 - 我的意思是某人可以直接与该端点通话并传递Facebook电子邮件,而无需通过应用程序的FB验证。我将如何确保端点停止? –

0

选项1.

您可以通过他的Facebook用户ID识别您的Facebook用户。如果他在其他设备上使用Facebook登录,那么他会在身份验证过程中向您发送他的Facebook用户标识。他还会向您发送Facebook访问令牌,您将验证与Facebook的联系,看看它是否正确。使用这种方法,您必须为Facebook用户和“普通”电子邮件用户提供不同的身份验证方案。

选项2

有你可以使用Facebook来获得用户的电子邮件,并在您的注册屏幕前面加上它在电子邮件文本字段相同的登录方式。用户需要额外提供密码。这意味着你并没有真正使用Facebook进行登录,而是使用Facebook获取电子邮件(以及任何其他信息),以便用户不必输入它。

+0

我的关注点在于安全性 - 如果他们在Facebook上登录并且使用他们的公共FB电子邮件/ ID,那么阻止某人使用相同的身份验证方案来传递他人的Facebook ID并获得会话令牌? –

+0

对不起,我不清楚。 Facebook用户名是公开的。您可以使用Facebook用户ID和用户发送给您的令牌。然后,您通过Facebook进行身份验证,以检查这些凭据是否正确。这是安全的。基本上,您可以将Facebook ID与电子邮件以及令牌与密码进行比较。电子邮件是公开的,令牌是私人的。您验证与Facebook联系的令牌。 – RaffAl

0

这是一个旧帖子,但仍然非常有效。你是对的,任何有你的FB邮件的人都可能访问你的服务器rest-api并登录到它。要访问后端服务,您需要使用FB登录期间生成的FB访问令牌的密码。这被存储在设备中的钥匙串,并且可以检索为:

NSString *accessToken = [[FBSDKAccessToken currentAccessToken] tokenString]; 
NSString *userID = [[FBSDKAccessToken currentAccessToken] userID]; 

使用并联的FB认证系统定制登录/登记系统的主题覆盖该FB指南中:Using Facebook Login with Existing Login Systems

总之,不同的场景需要解决的问题:

  • 一个人注册了使用他们的电子邮件和密码,您的应用程序,但后来他们希望使用Facebook登录到他们的Facebook账户获得的数据,发布到他们的时间表,或者仅仅用于将来登录。
  • 一个人使用他们的电子邮件和密码注册了应用程序,但后来选择单独使用Facebook登录。本指南假定首先提供的电子邮件和与其Facebook帐户关联的主要电子邮件是相同的。
  • 一个人使用Facebook登录注册该应用程序,稍后希望使用电子邮件地址和密码登录该帐户。

本指南建议为FB登录和自定义登录使用两个不同的表。

相关问题