【发布时间】:2023-03-17 23:50:02
【问题描述】:
我正在编写一个抽象类来从多个社交网络中获取数据。在考虑了我需要在这个类中使用的所有东西之后,在该类的其他子类中使用它是有意义的,我开始编写一个简单的 auth_token 提取器来从 facebook 获取授权以从页面获取所有状态更新轮廓。我没有看到使代码工作的最佳方法是什么:
+ (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;
}
我得到的回报总是为零;
【问题讨论】:
标签: ios objective-c methods block afnetworking