在Facebook iOS SDK v 3.1.1上遇到问题

我的应用程序现在使用适用于iOS的Facebook SDK版本3.1.1。

在iOS6上,我注意到FBSession expirationDate奇怪行为。 日期总是设置为4001年(遥远的未来?)。 我已经读过这可能与offline_access权限有关,但我们并没有要求(我们曾经在应用程序的一个非常旧的版本中做过。但这是一个干净的图像上的全新安装。)

根据FB SDK指南,我们总是首先通过FBSession openActiveSessionWithReadPermissions请求基本读取权限。 返回的会话到期日期始终为4001-01-01。 稍后,当我们想发布时,我们调用FBSession reauthorizeWithPublishPermissions ,请求publish_action

这一切似乎都可以正常工作,直到令牌过期。 我只注意到expirationDate问题,因为我发现我们将过期的令牌传递给图形API,并且这些调用失败了。

但这不应该发生,对吧? – 只要应用程序开始冷,我们就会调用FBSession openActiveSessionWithReadPermissions ,每当应用程序变为活动状态时,我们都会调用FBSession handleDidBecomeActive 。 刷新任何过期的活动令牌应该是正确的,是吗?

我可能做错了什么,有什么需要检查的? 为什么expirationDate设置为4001?

编辑

我认为我的问题与此处描述的内容有关: 在Facebook iOS SDK的openActiveSession之后过期的访问令牌

我没有使用任何FB SDK支持来调用图API。 所以我没有利用显然内置的SDK支持来刷新iOS6管理的令牌。

编辑2

我认为这与我的问题完全相同:

iOS 6 Facebook登录不刷新访问令牌

也在这里引用: http : //developers.facebook.com/bugs/441739699216684?浏览者=search_5099512da57214b73000801

事实上,offline_access权限确实返回了在4001年过期的身份validation令牌。

根据我迄今为止的经验,根据FB令牌调试器 ,iOS 6的本机FB身份validation始终返回一个令牌,其到期日期(在您的应用程序的plist中)也记录为年份4001,但其实际到期日期大不相同。 简而言之,不要依赖手机上存储的价值。 不知何故,这是一个脱节。

我也有同样的假设(调用FBSession openActive …和handleDidBecomeActive)关于我的令牌通过调用这些方法得到刷新,但这对我来说也没有成功。

在您的更新中,您链接到我提出的类似问题,我刚刚添加了我的解决方案。 你可以在这里查看: http : //facebook.stackoverflow.com/questions/13125430/ios-6-facebook-login-not-refreshing-access-token#answer-13298770

希望这有帮助!