使用新的“Facebook SDK for iOS”与旧的“Facebook iPhone SDK”进行Facebook身份validation

我正在整合Facebook与我的iPhone / iOS应用程序,我想知道我是否正确理解login过程的性质。

使用旧的Facebook SDK('Facebook iPhone SDK'),当我们需要从用户请求authentication权限时,UIWebView将以login提示显示。 使用新的SDK('Facebook SDK for iOS'),SDK使用Apple的快速应用程序切换function临时将应用程序置于后台模式,然后加载iOS Facebook应用程序或Safari进行身份validation。 这基本上是它的要点吗?

我已经尝试通过新的SDK技术validation我的应用程序,由于我的应用程序的性质,它只是不能支持后台。 这是否意味着我必须使用旧的SDK来启动基于UIWebView的身份validation? 无论如何,我认为这个实现是非常清晰的。 我会遇到这样做的主要缺点吗?

我不相信这是事实。

我知道的Facebook SDK,可以在https://github.com/facebook/facebook-ios-sdk上find,不会像你所描述的那样。 这是你使用的SDK吗? 我相信从“旧”的facebook SDK这个SDK的最后一个重大更新是增加对OAuth风格的authentication的支持。 随着这一变化,他们破坏了代码的兼容性,所以应用程序被迫进行更改以合并最新的SDK。

当您在此SDK中调用“授权”时,您将传递应用程序标识,期望的权限以及callback委托,以通知错误或成功(login,未login,注销)。 您还可以设置您可能从前一个会话持续存取的任何访问令牌。 Facebookvalidation此访问令牌,如果它不存在或无效,它将呈现一个模式login对话框。 我相信这个对话框的内容是一个网页。 SDK使用OAuth对用户进行身份validation,并使身份validation令牌在会话之间持续存在。

在任何时候,应用程序退出运行Facebook应用程序或Safari。 我很好奇 – 是什么让你相信这是事实? (或者,也许还有其他一些SDK,我不知道?)

看看这个问题和我的答案: Iphone的Facebook连接示例调用Safari浏览器。 我不想用safari

您可以使其始终使用UIWebView 。 Facebook试图做到这一点,用户只需要每个设备login一次(通过Facebook应用程序或Safari),但我不喜欢这个stream量(特别是在iPad上)。 虽然我宁愿不用Facebook的代码,但是我发现有几条评论是为了让旧的行为恢复正常。

看看这个页面: https : //github.com/facebook/facebook-ios-sdk

并看看单点login 。 这就描述了快速切换的上述情况。