【问题标题】:Facebook access token can not be extendedFacebook 访问令牌无法扩展
【发布时间】:2012-02-29 17:00:15
【问题描述】:

我正在使用我刚刚从 github 下载的 facebook android sdk。

我了解访问令牌仅在非常有限的时间内有效,并且每次启动应用程序时都需要按照文档中的说明进行扩展。 https://developers.facebook.com/docs/mobile/android/build/#extend_token

这有两个问题:
1) 当令牌已经过期(仅仅一两个小时后!)时,函数 extendAccessTokenIfNeeded() 不会更新。

2) 当我绕过第一个问题时,另一个问题是找不到扩展令牌所需的意图。

来自 SDK 源代码:

Intent intent = new Intent();
intent.setClassName("com.facebook.katana",
                    "com.facebook.katana.platform.TokenRefreshService");
...
ResolveInfo resolveInfo =
            context.getPackageManager().resolveActivity(intent, 0);
if (resolveInfo == null) {
        return false;
}

resoveInfo 在这里始终为空。

关于如何扩展令牌的任何想法?我不想在令牌过期时一直调用 authenticate() 函数。这将完全破坏用户体验!

谢谢 西蒙

【问题讨论】:

  • 您可以使用此处所述的离线访问权限 - stackoverflow.com/a/2705505
  • 我知道offline_access 权限。但是,这不是根据 FB 文档处理令牌过期的首选方法,也不会改变处理这种情况的首选方法不起作用的事实。 developers.facebook.com/docs/offline-access-deprecation
  • 你有什么解决办法吗?我有同样的问题,我的调查得出了同样的结论:resolveInfo 为空,这就是 extendAccessToken 不起作用的原因……非常感谢有关这方面的消息!
  • 不,不是。我最终还是使用了 offline_access 权限。

标签: android facebook single-sign-on token


【解决方案1】:

facebook android sdk 与刷新令牌服务建立连接以扩展访问令牌,但该服务是 Facebook android 应用程序的一部分,这意味着您的应用程序用户需要先安装原生 Facebook。

替代方案:

  1. 您可以使用图 api /auth/access_token 中描述 developer.facebook.com/docs/offline-access-deprecation/

  2. 我尝试了来自 facebook iOS SDK 的请求,它可以工作:

GET api.facebook.com/method/auth.extendSSOAccessToken?access_token=

或 json 格式。 获取 api.facebook.com/method/auth.extendSSOAccessToken?format=json&access_token=

请在以上所有网址前加上 https://。

【讨论】:

  • 我已经使用了离线权限,当然不完美。这个看起来不错,我会在下一个版本的应用程序中尝试这样做。
  • @SimonSays ,我也遇到了 extendAccessTokenIfNeeded() 函数的问题,我开始认为这不仅仅是我!你用上面的方法成功了吗?
  • 我还没有机会尝试它,但它看起来像是通常的网络应用程序访问,所以我猜它应该可以工作。如果您尝试过并且有效,请告诉我。
猜你喜欢
  • 1970-01-01
  • 2012-06-10
  • 2012-03-30
  • 2012-04-28
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 2012-06-22
  • 2013-08-22
相关资源
最近更新 更多