Ios 如何检测Facebook访问令牌是否已刷新?
在我的应用程序中,我需要检测访问令牌是否已刷新,以便用新令牌更新API 由于Facebook SDK自动缓存访问令牌,我很难找到解决此问题的最佳方法-目前我正在将旧令牌(保存为NSUserDefaults)与activeSession的accessTokenData的accessToken进行比较 如果令牌不同,我将使用较新的令牌更新api 这是我在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
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!