是否可以在Android应用中使用extendAccessTokenIfNeeded扩展Facebook令牌?

Mel*_*Mel 13 android facebook facebook-android-sdk facebook-access-token

我认为这可能会影响很多Facebook/Android开发者,但似乎没有那么多讨论这个话题......

我的问题

有没有人使用extendAccessTokenIfNeeded函数成功刷新令牌?如果确实有成功,那么设备(或仿真器)的运行版本是什么?

背景

我收到了来自Facebook的电子邮件,称从2012年5月1日起将弃用offline_access权限,Facebook建议升级到最新的SDK.精细.

我升级到最新的SDK,官方Facebook应用程序安装在我的设备上(最终!)单点登录似乎工作正常.我收到了60天的代币,再次没问题.

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

最明显的答案是我做错了什么,但是,一个错误报告被提交给Facebook说......"shouldExtendAccessToken实际上几乎总是会返回错误." 该报告已被列为优先"愿望清单".

extendAccessTokenAsNeeded()的替代方案

关于offline_accessFacebook文档中,可以使用Graph API扩展弃用令牌.然而,这具有需要将"App Secret"包括在URL中的缺点.优点是用户不需要在他们的设备上安装官方Facebook应用程序.

其他想法和顾虑

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

  • 我注意到Hackbook需要导入AndroidHttpClient.这仅适用于API 8及更高版本.这是否意味着Facebook SSO(特别是令牌刷新)只能在API 8及更高版本的设备上运行?

  • SDK中包含Facebook.apk已经很老了.也许这就是为什么令牌不会在运行API 8及更高版本的模拟器上刷新的原因?

  • 最后,所有这些只与那些安装了官方Facebook应用程序的人有关!对于那些没有官方Facebook应用程序的人来说,需要完成另一种方法(现在就抱怨!)

相关的Facebook链接

GitHub上的Facebook-Android-SDK

Facebook Android教程

Facebook offline_access权限已弃用

Facebook错误报告

相关的Stack Overflow问题

Facebook 60天访问令牌和不推荐使用的Offline_Access

Facebook访问令牌无法扩展

5月1日之后弃用后,offline_access如何工作?

Facebook访问令牌无法扩展

为extendAccessToken使用保护app秘密(Java/Android)

DMC*_*MCS 3

我不了解Android开发,但是如果你对该函数有疑问,也许Android中有一个类似的CURL函数可以让你调用 https://graph.facebook.com/oauth/access_token?
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)