0

新的 Android 版 Facebook SDK (3.0) 已弃用许多旧方法,包括 setAccessToken 方法。这个(我认为)的替代品是方法 openWithImportedAccessToken

https://developers.facebook.com/docs/reference/android/3.0/Session#openWithImportedAccessToken(String, Date, Date, AccessTokenSource, List, StatusCallback)

有没有人有任何使用这个的例子?特别是如何获取访问令牌的过期时间和最后一次刷新时间?

4

2 回答 2

1

我们这里的文档告诉您如何检索/调试访问令牌以检索元数据,例如过期和发布时间。如果您事先没有这些字段,则可以使用此端点。

于 2012-11-23T19:49:19.910 回答
1

如果您没有特定参数的数据,您可以在此处填写合理的默认值,这些默认值会导致次优但不是太糟糕的行为。

请记住,您应该只在升级到 3.x Android SDK 后一次运行时调用此 API,以便从之前存储令牌的任何位置导入令牌。之后,SDK 默认管理令牌缓存。因此,任何次优行为都应一次性本地化到此升级。

提供你知道的数据。对于您不知道的情况,通常可以指定:

  • 有效期为从现在起 60 天
  • 最后更新时间是现在
  • AccessTokenSource 是 FACEBOOK_APPLICATION
  • 权限列表为空

请注意,如果您总是要求相同的权限并因此知道您的旧令牌具有哪些权限,请使用这些权限。

如果您可以为这些参数提供正确的值,那就更好了,但缺点通常并不可怕。以下是对这个 API 撒谎的缺点:

  • 指定过期时间晚于实际时间的缺点:如果令牌过期,您仍然可以发出请求并让 Facebook 服务返回错误,而不是在客户端立即注意到它。
  • 指定上次更新时间的缺点是:SDK 将尝试在第一个请求时刷新令牌,而不是等待 24 小时。
  • 将 AccessTokenSource 指定为 FACEBOOK_APPLICATION 的缺点:如果令牌来自 WebView,SDK 将尝试刷新您的令牌,操作将失败。最终令牌会过期,后续登录会更正 AccessTokenSource 值。
  • 指定空权限的缺点:当你要执行一个操作时,你应该检查你是否有权限做这个操作,如果没有,你应该调用 Session.reauthorize() 来请求权限。如果您使用空列表(或您实际拥有的权限较少)调用 openWithImportedAccessToken(),那么您会认为您没有权限,并会再次向用户询问权限。只要这是在用户执行需要此权限的操作的上下文中,这对用户来说应该不会太刺耳。
于 2012-11-24T07:05:34.297 回答