git地址: https://github.com/AFNetworking/AFOAuth2Manager
这个库,不多说,实现OAuth 2.0授权访问。
确实可以减轻很大的负担,而且使用很容易。但是,我也是遭遇了挫折好几次才玩懂的。估计是自己太笨了。
NSURL *baseURL = [NSURL URLWithString:@"http://xxx.xxx.x.x:xxxx"]; AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:baseURL]; [manager POST:@"/OAuth/token" parameters:@{@"client_id":@"xxx", @"client_secret":@"xxx", @"grant_type":@"xxx", } success:^(AFHTTPRequestOperation *operation, id responseObject) { NSLog(@"\n=============accessToken=================\n\n%@\n\n",responseObject); //! 存储credential,内含access_token AFOAuthCredential *credential = [[AFOAuthCredential alloc]initWithOAuthToken:[responseObject objectForKey:@"access_token"] tokenType:[responseObject objectForKey:@"token_type"]]; [credential setExpiration:[responseObject objectForKey:@"expires_in"]]; //! 记录token过期时间,这里的token有效时间为1800s _tokenInvalidateTime = [NSDate dateWithTimeIntervalSinceNow:1770]; //! 设置需要在Headers中加入的参数Authorization,_opManager为另一个AFHTTPRequestOperationManager,因为我这个例子里,二者使用的baseURL不同 _opManager.requestSerializer = [AFHTTPRequestSerializer serializer]; [_opManager.requestSerializer setAuthorizationHeaderFieldWithCredential:credential]; //! 我这里并没有用做着提供的方法,将credential写入文件, //! 因为我是直接将Authorization的设置放在了这里完成 //! 如果,我没有用到这_opManager //! 这里我就应该用[AFOAuthCredential storeCredential:credential withIdentifier:serviceProviderIdentifier]; //! 这个方法将credential写入文件, //! 之后用AFOAuthCredential *credential = [AFOAuthCredential retrieveCredentialWithIdentifier:serviceProviderIdentifier]; //! 方法在其他地方重新获取这个credential。credential里就还有token等信息 } failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"\nAccessToken获取失败: %@", error); }];
时间: 2024-11-06 01:08:02