为啥适用于 iOS 6 的 Facebook SDK 在某些用户上失败但在其他用户上成功?

Posted

技术标签:

【中文标题】为啥适用于 iOS 6 的 Facebook SDK 在某些用户上失败但在其他用户上成功?【英文标题】:Why does Facebook SDK for iOS 6 fail on some users but succeed on others?为什么适用于 iOS 6 的 Facebook SDK 在某些用户上失败但在其他用户上成功? 【发布时间】:2013-01-25 19:19:08 【问题描述】:

Facebook ios SDK 3.1 在我的应用中实现,但我一直在使用 SSO,因为它更易于理解。

现在我正在实现支持 iOS 6 Facebook 帐户集成的 Facebook SDK 部分。

我想知道大家看到这个过程后对这个问题的第一想法是什么:

On the simulator
sign into my facebook account in Settings app
switch back to my app
sign in with facebook account
handler for openActiveSessionWithReadPermissions gets state FBSessionStateOpen
everything works.

switch back to settings app
remove my account
sign in with facebook test user account
switch back to my app
sign in with facebook account
handler for openActiveSessionWithReadPermissions gets state FBSessionStateClosedLoginFailed

在实施 Facebook SDK for iOS 6 集成部分之前,单点登录完美运行,100% 的时间用于 facebook 测试用户帐户。

iOS 6 集成在特定用户上 100% 失败,而 SSO 实施对相同用户 100% 有效,是否有任何原因? 最后一点:我的应用出现在“设置”>“Facebook”的列表中时,它已打开/启用。

【问题讨论】:

【参考方案1】:

我遇到了同样的问题。核心似乎是当您在设置应用程序中拥有 FB 凭据时,Facebook 使用一种路由进行身份验证。当您删除它时,FB 会检查存储的设置并失败并返回关闭状态。它希望能够使用会话,但被破坏了。

请记住,在实际设置中,您的用户不会以这种方式在设置之间切换。当您在设备上测试各种场景时,这是非常令人不安的,但现实世界的用户不会尝试不同的用户登录或不同的用户凭据打开/关闭场景。

【讨论】:

谢谢你,是的,你提到要记住的注释一直在我的脑海里 :) 但是关于 Facebook 期望使用会话但被破坏的注释,这一切是什么关于?当一个会话在逻辑上不应该处于活动状态时,Facebook 如何期望使用会话? 第三次阅读您的消息后,我想知道:是否应该在设置> Facebook 登录时为所有授权应用程序打开一个会话,并在应用程序启动和终止之后持续存在?或者,会话应该在应用程序中打开并在 iOS 的帐户商店中持续存在,超出应用程序终止?但我很困惑为什么它会 100% 失败。如何才能真正打开会话?? 当处理程序收到状态 FBSessionStateClosed 或 FBSessionStateClosedLoginFailed 时,我在 FBSession.activeSession 上使用 closeAndClearTokenInformation。不知道这是否真的阻碍了设置。 令牌基于每个应用程序,因此不应该有影响。会话可以在您的应用启动之外持续存在,不确定框架是否将其保留在某个缓存中。 我对 FB 的看法 - 不是很好。我真的疯了,试图在 FB 上为我的应用程序设置一个“应用程序页面”。我看到了一个包含 php 脚本段的页面,并被要求点击不存在的链接!

以上是关于为啥适用于 iOS 6 的 Facebook SDK 在某些用户上失败但在其他用户上成功?的主要内容,如果未能解决你的问题,请参考以下文章

适用于 iOS 4.0 的 Facebook sdk

为啥在ios中重新打开会话后无法访问facebook好友列表

适用于 iOS 的 Facebook 和 Quickblox 集成

适用于iOS的Facebook SDK:未显示FBSDKShareDialog

适用于 iOS 访问令牌问题的 Facebook SDK

适用于 iOS 的 Facebook 开放图?