facebook万岁令牌续费

时间:2012-12-21 16:26:51

标签: ios facebook access-token

我正在使用Facebook iOS SDK 3.1。

来自FB docs

  

从我们的移动SDK(Android和iOS)创建的应用程序,从桌面应用程序和服务器端登录流程自动获得长期用户访问令牌。每次用户触发auth流时,这个长期存在的令牌都会刷新并扩展。

令牌的有效期为60天。

我有当前的实施:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions
{

  if (![FBSession activeSession].isOpen) {
    if ([FBSession activeSession].state == FBSessionStateCreatedTokenLoaded) {
      [[FBSession activeSession] openWithCompletionHandler:^(FBSession *session,
                                                               FBSessionState status,
                                                               NSError *error) {}];
    }
   }
}

,但只有当应用程序第一次启动或被杀死之后才会触发此操作。

这里有几个问题:

  1. 在使用应用程序时延长令牌的正确步骤应该是什么,但是在60天内没有进行FB调用。

  2. 假设应用程序正在运行或进入后台模式且用户未使用任何FB功能(例如共享/注销/登录),是否会自动续订令牌?

  3. 通过SDK访问FB调用时,令牌是否会自动续订并在FBSession中可用?

1 个答案:

答案 0 :(得分:4)

为了澄清一下,使用Facebook SDK 3.1时,在进行API调用时或在auth流程中,访问令牌会在后台刷新。刷新发生在距离上次刷新时间大约一天之后。

  1. 如果长时间没有进行FB调用,并且令牌过期,则应重新授权该用户。这可能意味着他们通过重新认证流程。因此,当他们进行与FB相关的调用并且由于过期的令牌而失败时,您应该重新启动(另请参阅https://developers.facebook.com/docs/reference/api/errors/)。无论如何,您应该将此构建到您的应用中,因为令牌可能有不同的方式过期或无效。
  2. 不,它在API调用时刷新(参见答案1)。
  3. 是的,在最后一次刷新后的一段时间后。