Ios 如何检测Facebook访问令牌是否已刷新?

Ios 如何检测Facebook访问令牌是否已刷新?,ios,facebook,login,facebook-access-token,Ios,Facebook,Login,Facebook Access Token,在我的应用程序中,我需要检测访问令牌是否已刷新,以便用新令牌更新API 由于Facebook SDK自动缓存访问令牌,我很难找到解决此问题的最佳方法-目前我正在将旧令牌(保存为NSUserDefaults)与activeSession的accessTokenData的accessToken进行比较 如果令牌不同,我将使用较新的令牌更新api 这是我在applicationWillEnterForeground NSString *newToken = [FBSession activeSes

在我的应用程序中,我需要检测访问令牌是否已刷新,以便用新令牌更新API

由于Facebook SDK自动缓存访问令牌,我很难找到解决此问题的最佳方法-目前我正在将旧令牌(保存为NSUserDefaults)与activeSession的accessTokenData的accessToken进行比较

如果令牌不同,我将使用较新的令牌更新api

这是我在
applicationWillEnterForeground

  NSString *newToken = [FBSession activeSession].accessTokenData.accessToken;
  NSString *oldToken = [[NSUserDefaults standardUserDefaults]valueForKey:@"accessToken"];

  if (oldToken) {
        if ([newToken isEqualToString:oldToken]) {
            NSLog(@"token was not refreshed");
        } else {
            NSLog(@"token was refreshed");
            [[NSUserDefaults standardUserDefaults]setValue:newToken forKey:@"accessToken"];
            /* update API with new token*/
        }
    } else+
    {
        //if no token exists, set one with the current token
        [[NSUserDefaults standardUserDefaults]setValue:newToken forKey:@"accessToken"];
    }

我不得不承认这真的很烦人,但我似乎找不到解决的办法。有什么更好的方法吗?

你说的“刷新”是什么意思?当您从登录流中获得访问令牌时,它将始终是通过at流提供给您的最新令牌-字符串本身可能不会更改,即使到期时间发生变化,以反映用户继续使用您的apphmm,我的假设是,访问令牌在到期时会得到更新@Igy@Igy你是说如果用户从未注销,访问令牌不可能过期?这取决于您正在做什么-如果您在iOS SDK中使用示例代码,它将在FBSession中自动刷新令牌,并为您提供一个有效的令牌,直到“用户上次打开应用程序的时间”+令牌过期(可能1-2小时),但是令牌字符串本身可能会更改,也可能不会更改谢谢您的帮助@Igy!