2

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

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

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

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

但这不应该发生,对吧?- 每当应用程序启动时我们调用FBSession openActiveSessionWithReadPermissions,每当应用程序启动时我们调用FBSession handleDidBecomeActive。刷新任何过期的活动令牌应该是正确的,是吗?

我可能做错了什么,有哪些事情需要检查?为什么将 expireDate 设置为 4001?

编辑

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

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

编辑 2

我认为这是我的问题的完全重复:

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

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

4

1 回答 1

0

offline_access 权限实际上确实返回了一个在 4001 年过期的身份验证令牌。

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

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

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

希望这会有所帮助!

于 2012-11-08T22:21:17.257 回答