移动应用:持久登录(使用两种身份验证方法)

时间:2014-07-16 10:55:54

标签: ios facebook web-services authentication mobile

我正在设计一款具有以下功能的移动应用程序:

  1. 用户首次打开应用时,会要求通过使用传统的用户名/密码架构登录/注册或使用Facebook登录来验证自己对应用Web服务的身份。
  2. 然后,下次打开应用程序时,用户将无需再次输入其凭据并自动登录。
  3. 实施第一种身份验证方法。 Web服务发回用户用于验证自己的身份验证令牌。后者与用户ID一起存储在移动设备的非易失性(受保护)存储中。

    我知道很多应用程序提供了我们正在讨论的两种身份验证方法。我想知道它通常如何与Facebook身份验证相结合。目前,我正考虑在Facebook登录后生成凭据,并将Facebook用户身份验证到我的网络服务,就好像他们是经典用户一样。用户将存储在同一Web服务数据库表中。请注意,数据库中的标志会告诉我们用户是否使用Facebook进行登录,因为如果用户在另一台设备上使用相同的Facebook帐户(通过电子邮件识别)登录,则不会有重复。

    编辑:此外,有些应用程序允许Facebook用户与他们的Facebook好友一起玩,但是如何以持久的方式完成,因为只能有一个临时访问令牌来查询Facebook API?更一般地说,一些应用程序如何保持FB会话持久性?

    你觉得它可行吗?

1 个答案:

答案 0 :(得分:4)

Facebook访问令牌有两种类型:短期和长期。你可能玩过短期游戏,但Facebook文档说[1]通常移动应用使用长期应用。

  

使用Facebook SDK的原生移动应用程序将获得长期访问令牌,大约可以使用60天。当使用您的应用程序的人向Facebook的服务器发出请求时,这些令牌每天将刷新一次。如果没有请求,令牌将在大约60天后过期,并且该人必须再次通过登录流程才能获得新令牌。

iOS Facebook SDK [2]有一个关于维护会话的示例,示例来自捆绑包的安装包。 (同样的代码也在GitHub [3]。)这是GitHub中最重要的部分:

SLAppDelegate *appDelegate = [[UIApplication sharedApplication]delegate];
if (!appDelegate.session.isOpen) {
   // Open new session
}

使用isOpen恢复/找到活动会话后,示例中没有代码行可以刷新它。我不是iOS程序员,但对我来说,引用文档中的段落和教程中的代码片段我清楚地认为,甚至不需要刷新其他动作,只能在大约60天内成功使用。

简而言之,你不能永久拥有永久性令牌,但幸运的是,如果你让用户以足够频繁的方式使用应用程序,你几乎只有一个永久令牌。

[1] https://developers.facebook.com/docs/facebook-login/access-tokens
[2] https://developers.facebook.com/docs/ios/sample-apps#sdk
[3] https://github.com/Citrrus/facebook-ios-sdk/tree/master/samples/SessionLoginSample