android - 是否可以在 Android 应用程序中使用 extendAccessTokenIfNeeded 扩展 Facebook token ?

标签 android facebook facebook-android-sdk facebook-access-token

我认为这可能会影响很多 Facebook/Android 开发人员,但似乎没有太多关于该主题的讨论...

我的问题

有没有人使用 extendAccessTokenIfNeeded 函数成功刷新 token ?如果您确实成功了,设备(或模拟器)运行的是什么版本?

背景

我收到一封来自 Facebook 的电子邮件,说 offline_access 权限将从 2012 年 5 月 1 日起弃用,并且 Facebook 建议升级到他们最新的 SDK。很好。

我升级到最新的 SDK,我的设备上安装了官方 Facebook 应用程序并且(最终!)单点登录似乎工作正常。我收到了 60 天的 token ,这也没有问题。

当我尝试使用 extendAccessTokenIfNeeded(Context context, ServiceListener serviceListener) 时出现问题。我无法让它刷新我的 token 以延长到期时间。我在两次尝试之间等了 24 小时,但 token 不会刷新。我可以获得刷新 token 的唯一方法是注销并登录。当我使用示例项目“Hackbook”时也会发生这种情况。

最明显的答案是我做错了什么,但是,bug report被提交给 Facebook 说......“shouldExtendAccessToken 实际上几乎总是返回 false。”该报告已被赋予优先级“愿望 list ”。

extendAccessTokenAsNeeded() 的替代方法

Facebook documentation about offline_access deprecation可以使用 Graph API 扩展 token 。然而,这有 disadvantage of needing the "App Secret"被包含在 URL 中。一个优点是用户不需要在他们的设备上安装官方 Facebook 应用程序。

其他想法和顾虑

  • 通过将 Facebook.java 中的 extendAccessTokenIfNeeded 函数更改为始终返回 true,我想我让它刷新了一次。 (我说“思考”的原因是因为它不会重复这种行为,我怀疑我必须再等 24 小时才能有再次成功的机会)

  • 我注意到 Hackbook 需要 AndroidHttpClient成为 进口。这仅适用于 API 8 及更高版本。意思是不是 Facebook SSO(特别是 token 刷新)只可能在具有 API 8 及更高版本的设备上工作?

  • Facebook.apk included in the SDK很旧了。也许这就是 token 在运行 API 8 及更高版本的模拟器上不刷新的原因?

  • 最后,所有这些只与那些拥有 已安装官方 Facebook 应用程序!对于那些没有官方 Facebook 应用程序的人,需要完成另一种方法(现在只是提示!)

相关 Facebook 链接

Facebook-Android-SDK at GitHub

Facebook Android Tutorial

Facebook offline_access permission deprecation

Facebook bug report

相关堆栈溢出问题

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)

最佳答案

我不知道 Android 开发,但如果你在使用该功能时遇到问题,也许 Android 中有一个类似的 CURL 功能可以让你调用 https://graph.facebook.com/oauth/access_token?<br/> client_id=APP_ID& client_secret=APP_SECRET& grant_type=fb_exchange_token& fb_exchange_token=EXISTING_ACCESS_TOKEN

(谷歌透露:http://thesoftwarerogue.blogspot.com/2010/05/porting-of-libcurl-to-android-os-using.html 关于如何从 Android 进行 CURL)

关于android - 是否可以在 Android 应用程序中使用 extendAccessTokenIfNeeded 扩展 Facebook token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10073426/

相关文章:

android - 如何将 ListView 实现为 fragment ?

java - Smack Android 客户端无法连接 ejabberd 服务器

android - AutoCompleteTextView - 建议在调用 `notifyDataSetChanged` 时自动关闭

ios - "_OBJC_CLASS_$_Facebook",引用自 : objc-class-ref in AppDelegate. o

Javascript Facebook API POST 多部分/表单数据

android - 如何使用 Android SDK 撤销所有 Facebook 权限?

android - 防止媒体扫描仪扫描在 Android 上使用 DownloadManager 下载的 JPG? (开发商)

android - 如何从 facebook sdk 获取用户生日?

android - 检测用户是否已从他的 Facebook 应用程序中删除了我的应用程序

android - Facebook SDK for Android 对依赖项的重复支持库