0
我正在編寫一個抽象類來從多個社交網絡獲取數據。在考慮了所有需要在這個類中使用的東西之後,在該類的其他子類中使用它之後,我開始編寫一個簡單的auth_token提取器,以從facebook獲得授權以從頁面獲取所有狀態更新個人資料。我沒有看到什麼是最好的方法來使代碼工作:等待塊完成返回標記nsstring
+ (NSString *)requestAuthToken {
NSString *authTokenKey = [[self socialNetworkName] stringByAppendingString:@"AuthToken"];
NSString *authTokenDateKey = [[self socialNetworkName] stringByAppendingString:@"AuthTokenDate"];
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
__block NSString *authToken = [userDefaults stringForKey:authTokenKey];
NSDate *authTokenDate = (NSDate*)[userDefaults objectForKey:authTokenDateKey];
NSTimeInterval expirationDate = [authTokenDate timeIntervalSinceNow];
NSTimeInterval now = [[NSDate date] timeIntervalSinceNow];
NSTimeInterval dateDiff = expirationDate - now;
int diff = roundf(dateDiff/(60 * 60 * 24));
if (authToken == nil|| diff >= kMaxDaysExpiratonForAuthToken) {
DLog(@"AuthToken not Cached, requesting token with %@", [self socialNetworkName]);
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:[NSURL URLWithString:[self socialNetworkAPIURL]]];
NSDictionary *parameters = [self socialNetworkAPIAuthTokenParameters];
[httpClient getPath:[self socialNetworkAPIAuthTokenURLPath] parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
authToken = [NSString stringWithUTF8String:[responseObject bytes]];
[userDefaults setObject:[NSDate date] forKey:authTokenDateKey];
[userDefaults setObject:authToken forKey:authTokenKey];
// [userDefaults synchronize];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
DLog(@"error requesting the token %@", error);
}];
}
return authToken;
}
我得到的回報總是n;