【发布时间】:2019-02-19 23:51:27
【问题描述】:
我想在我登录应用程序并接收访问令牌后对我进行的每个 API 调用使用访问令牌。我尝试了很多东西,但没有任何结果。当我在邮递员上测试它时,我得到了正确的响应。我不知道我做错了什么。我正在使用 AFNetworking(AFHTTPSessionManager 是 NetworkIntractor 的基类),这是我的网络层代码:
+(NetworkIntractor *)sharedManager{
static NetworkIntractor *manager = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
config.requestCachePolicy = NSURLRequestReloadIgnoringLocalCacheData;
config.URLCache = nil;
config.timeoutIntervalForRequest = 15.0f;
config.timeoutIntervalForResource =20.0f;
if ([USERDEFAULT boolForKey:LOGGEDIN] == YES) {
[manager.requestSerializer setValue:[[NSUserDefaults standardUserDefaults]valueForKey:AccessToken] forHTTPHeaderField:@"Authorization"];
}
manager = [[NetworkIntractor alloc]initWithBaseURL:[NSURL URLWithString:BASEURL] sessionConfiguration:config];
[manager setRequestSerializer:[AFHTTPRequestSerializer serializer]];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
[manager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"];
});
return manager;}
void call_getNetworkingAPI(NSURL *url, SuccessBlock successBlock, FailureBlock failureBlock){
NSURLSessionDataTask *task = [[NetworkIntractor sharedManager].session dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
if (error == nil) {
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
if (dict != nil) {
successBlock(dict,response);
}
}else
{
failureBlock(error,response);
}
}];
[task resume];
}
感谢任何帮助。
【问题讨论】:
-
您存储在 NSUSerDefaults 中的值是否只是原始令牌?如果是这样,您需要在 Authorization 标头中添加一个令牌类型(例如,在令牌之前添加“Bearer”)。
-
@DavidS.我试过你说的,我保存访问令牌如下:accessTokenDict = @{@"Bearer":userDetails[@"accessToken"]};但它仍然无法正常工作。
-
@DavidS.你能推荐点别的吗?
-
Bearer和token之间应该有一个空格。
-
@DavidS。是的,那里也有。
标签: ios objective-c api access-token