Facebook iOS SDK v 3.1.1 遇到问题
Posted
技术标签:
【中文标题】Facebook iOS SDK v 3.1.1 遇到问题【英文标题】:having trouble with Facebook iOS SDK v 3.1.1 【发布时间】:2012-11-06 00:45:17 【问题描述】:我的应用现在使用适用于 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?
编辑:
我认为我的问题与此处描述的内容有关:Expired access token after openActiveSession for Facebook iOS SDK
我没有使用任何 FB SDK 支持来调用图形 API。所以我没有利用显然内置的 SDK 支持来刷新 iOS6 管理的令牌。
编辑 2:
我认为这与我的问题完全相同:
iOS 6 Facebook Login not refreshing access token
这里也引用了:http://developers.facebook.com/bugs/441739699216684?browse=search_5099512da57214b73000801
【问题讨论】:
新帐户是否会出现这种情况? @pnollet - 一个全新的 FB 帐户?我没试过。但是我已经从应用程序中取消了我的 FB 帐户的授权。我已经删除,然后重新添加了我的 iOS6 FB 授权(似乎是在我的 iPhone 上重置此问题的唯一方法) 【参考方案1】:offline_access 权限实际上返回了一个在 4001 年过期的身份验证令牌。
根据我目前的经验,iOS 6 的原生 FB 身份验证始终返回一个令牌,其到期日期(在您的应用程序的 plist 中)也记录为 4001 年,但其实际到期日期大不相同,根据 @987654321 @。简而言之,不要依赖手机上存储的价值。不知何故,断开连接。
我也有与您相同的假设(调用 FBSession openActive... 和 handleDidBecomeActive)关于通过调用这些方法刷新我的令牌,但这对我来说也没有成功。
在您的更新中,您链接到了我提出的类似问题,我刚刚添加了我的解决方案。你可以在这里查看: http://facebook.***.com/questions/13125430/ios-6-facebook-login-not-refreshing-access-token#answer-13298770
希望这会有所帮助!
【讨论】:
谢谢。是的,我浏览了 FB SDK 代码,找到了他们将日期设置为 4001 / 遥远未来的地方。有一条评论说“错误 - 需要一种从 iOS 获取到期日期的方法”。我计划按照您的描述进行修复,当应用程序进入前台时发出无声的“我”请求,以强制刷新任何令牌。以上是关于Facebook iOS SDK v 3.1.1 遇到问题的主要内容,如果未能解决你的问题,请参考以下文章
iOS - Facebook SDK v.4.5.1 - 获取用户名和电子邮件
iOS – 从 facebook.com 删除应用程序后,Facebook SDK 3.1.1 访问警报不显示
iOS - Facebook SDK 3.1.1 构建失败 armv7