如何在新的Android SDK for Android 3.02中使用'openWithImportedAccessToken'方法

时间:2012-11-23 06:06:04

标签: android facebook facebook-android-sdk

新的Facebook SDK for Android(3.0)已弃用了许多旧方法,包括setAccessToken方法。替换它(我认为)是方法openWithImportedAccessToken

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

有没有人有任何使用它的例子?特别是如何获得访问令牌的到期时间和上次刷新时间?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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

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

  • 到期日期为60天后
  • 上次更新时间现在是
  • AccessTokenSource是FACEBOOK_APPLICATION
  • 权限列表为空

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

最好是为这些参数提供正确的值,但缺点通常并不严重。以下是这个API的缺点:

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