我正在使用 OAuth 2.0 登录网站。所以每次当我尝试登录服务器时,我都会收到一个响应,其中提到了到期日期、访问令牌和刷新令牌。问题是令牌在我从服务器获得的给定时间之前过期。所以我发现服务器时间和iPhone时间之间有一个间隔。当我查看 SDK facebook 的代码时,没有处理这个问题的逻辑,这是一个简单的比较。所以我的问题是服务器端的这个问题我的意思是OAuth的实现不正确还是客户端的问题?
脸书代码:
- (BOOL)isSessionValid {
return (self.accessToken != nil && self.expirationDate != nil
&& NSOrderedDescending == [self.expirationDate compare:[NSDate date]]);
}
我的代码:
// Get the remaining period of the token to expire and subtract 30 sec
int delay = ([expirationDate timeIntervalSinceDate:serverDateTaken] - 30);
// Save the new Expiring date
objectOAuth.expiresIn = [[[NSDate date] dateByAddingTimeInterval:delay] description];
+ (BOOL)isSessionValid
{
// Get expiration date
OAuth *authParam = [Connection getSessionParameters];
// Formating
static NSString *timeZone = @"UTC";
NSDate *expirationDate = [Connection getDateFromString:authParam.expiresIn withTimeZone:timeZone];
// get the remaining period
int diff = [expirationDate timeIntervalSinceNow];
// Check if it's expired
return (diff <= 0);
}