我的应用程序现在使用适用于 iOS 的 Facebook SDK 版本 3.1.1。
在 iOS6 上,我注意到 FBSession expirationDate
的奇怪行为.日期始终设置为 4001 年(遥远的 future ?)。我读到这可能与 offline_access
有关许可,但我们并不要求这样做(我们曾经在一个非常旧版本的应用程序中这样做。但这是在干净图像上的全新安装。)
根据 FB SDK 指南,我们总是首先通过 FBSession openActiveSessionWithReadPermissions 请求基本读取权限。返回的 session 到期日期始终为 4001-01-01。稍后,当我们要发帖时,我们调用FBSession reauthorizeWithPublishPermissions
, 求 publish_action
.
在 token 过期之前,这一切似乎都可以正常工作。我只注意到 expireDate 问题,因为我发现我们正在将过期 token 传递给图形 API,并且这些调用失败了。
但这不应该发生,对吧? - 每当应用程序冷启动时,我们都会调用 FBSession openActiveSessionWithReadPermissions
,并且每当应用程序激活时,我们都会调用 FBSession handleDidBecomeActive
.刷新任何过期的事件 token 应该是正确的,是吗?
我可能做错了什么,有哪些事情需要检查?为什么将 expireDate 设置为 4001?
编辑 :
我认为我的问题与此处描述的内容有关:Expired access token after openActiveSession for Facebook iOS SDK
我没有使用任何 FB SDK 支持来调用图形 API。所以我没有利用显然内置的 SDK 支持来刷新 iOS6 管理的 token 。
编辑 2 :
我认为这是我的问题的完全重复:
iOS 6 Facebook Login not refreshing access token
此处也引用:http://developers.facebook.com/bugs/441739699216684?browse=search_5099512da57214b73000801
最佳答案
offline_access 权限实际上确实返回了一个在 4001 年过期的身份验证 token 。
根据我目前的经验,iOS 6 的原生 FB 身份验证总是返回一个 token ,其到期日期(在您的应用程序的 plist 中)也记录为 4001 年,但根据 FB token debugger,其实际到期日期大不相同。 .简而言之,不要依赖手机上存储的值(value)。不知何故,有一个断开。
我也有与您相同的假设(调用 FBSession openActive... 和 handleDidBecomeActive)关于通过调用这些方法来刷新我的 token ,但这对我来说也没有成功。
在您的更新中,您链接到我提出的类似问题,我刚刚添加了我的解决方案。你可以在这里查看:
http://facebook.stackoverflow.com/questions/13125430/ios-6-facebook-login-not-refreshing-access-token#answer-13298770
希望这会有所帮助!
关于ios - Facebook iOS SDK v 3.1.1 遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13242787/