id credential = [[OSSFederationCredentialProvider alloc] initWithFederationTokenGetter:^OSSFederationToken * { NSURL * url = [NSURL URLWithString:[NSString stringWithFormat:@
"%@%@",Base_API,GetSTSToken_API]];NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:url];
//默认为get请求request.timeoutInterval=
10.0;
//设置请求超时为10秒request.HTTPMethod=@
"POST";
//设置请求方法OSSTaskCompletionSource * tcs = [OSSTaskCompletionSource taskCompletionSource];NSURLSession * session = [NSURLSession sharedSession];NSURLSessionTask * sessionTask = [session dataTaskWithRequest:requestcompletionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (error) {[tcs setError:error];
return;}[tcs setResult:data];}];[sessionTask resume];[tcs.task waitUntilFinished];
if (tcs.task.error) {
// NSLog(@"get token error: %@", tcs.task.error);return nil;} else {NSDictionary * object = [NSJSONSerialization JSONObjectWithData:tcs.task.resultoptions:kNilOptionserror:nil];OSSFederationToken * token = [OSSFederationToken new];token.tAccessKey = [object[@"Credentials"] objectForKey:@"AccessKeyId"];token.tSecretKey = [object[@"Credentials"] objectForKey:@"AccessKeySecret"];token.tToken = [object[@"Credentials"] objectForKey:@"SecurityToken"];token.expirationTimeInGMTFormat = [object[@"Credentials"] objectForKey:@"Expiration"];return token;}}];
文档上说能根据过期时间自动更新token,但是我发现这个block每次都会执行,不是应该到了过期时间才会执行吗?不知道是什么原因,请大家帮帮忙。。。
是过期时间传递的不对吗?过期时间是阿里接口返回的。。。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。