【发布时间】:2012-04-09 12:48:03
【问题描述】:
我认为这可能会影响到很多 Facebook/Android 开发人员,但似乎并没有太多关于这个话题的讨论......
我的问题
有人使用 extendAccessTokenIfNeeded 函数成功刷新了令牌吗?如果您确实成功了,那么设备(或模拟器)运行的是什么版本?
背景
我收到一封来自 Facebook 的电子邮件,说从 2012 年 5 月 1 日起将弃用 offline_access 权限,并且 Facebook 建议升级到他们最新的 SDK。很好。
我升级到最新的 SDK,官方 Facebook 应用程序安装在我的设备上,并且(最终!)单点登录似乎工作正常。我收到了 60 天的代币,这还是可以的。
当我尝试使用 extendAccessTokenIfNeeded(Context context, ServiceListener serviceListener) 时出现问题。我无法让它在更长的到期时间内刷新我的令牌。我在两次尝试之间等待了 24 小时,但令牌不会刷新。我可以获得刷新令牌的唯一方法是注销并登录。当我使用示例项目“Hackbook”时也发生了这种情况。
最明显的答案是我做错了什么,但是,bug report 被提交给 Facebook 说...“shouldExtendAccessToken 实际上几乎总是返回 false。”此报告已获得优先“愿望清单”。
extendAccessTokenAsNeeded() 的替代方法
Facebook documentation about offline_access deprecation 中的标记可以使用 Graph API 进行扩展。但是,这会将disadvantage of needing the "App Secret" 包含在 URL 中。一个优点是用户不需要在他们的设备上安装官方 Facebook 应用程序。
其他想法和顾虑
通过将 Facebook.java 中的 extendAccessTokenIfNeeded 函数更改为始终返回 true,我想我让它刷新了一次。 (我说“思考”的原因是因为它不会重复这种行为,我怀疑我必须再等 24 小时才能再次成功)
我注意到 Hackbook 要求 AndroidHttpClient 是 进口的。这仅适用于 API 8 及更高版本。这是否意味着 Facebook SSO(特别是令牌刷新)可能只适用于 API 8 及更高版本的设备?
Facebook.apk included in the SDK 已经很老了。也许这就是为什么令牌在运行 API 8 及更高版本的模拟器上不刷新的原因?
最后,所有这一切只与那些拥有 已安装官方 Facebook 应用程序!对于那些没有官方 Facebook 应用程序的人,需要完成另一种方法(现在只是抱怨!)
相关 Facebook 链接
Facebook-Android-SDK at GitHub
Facebook offline_access permission deprecation
相关堆栈溢出问题
Facebook 60 day access token and Deprecated Offline_Access
Facebook access token can not be extended
How would offline_access work after deprecation after May 1st?
Facebook access token can not be extended
Protecting app secret for extendAccessToken usage (Java/Android)
【问题讨论】:
-
"通过将 Facebook.java 中的 extendAccessTokenIfNeeded 函数更改为始终返回 true,我想我让它刷新了一次。(我说“认为”的原因是因为它不会重复该行为并且我怀疑我必须再等 24 小时才能再次成功)”你重新测试了吗?
标签: android facebook facebook-android-sdk facebook-access-token