开发者社区> 问答> 正文

STSFederationToken过期时间不起作用

根据教程,我的 setFederationTokenGetter是这么写的,测试正确,能够正确下载文件, 我原先以为是 OSSservice判断 token 过期后,才会回调这个方法重新获取新的 token。
但是现在是 每次点击按钮下载文件,系统都会进入这个方法重新向业务服务器申请新token, 不管 expiration过不过期, 难道token网络获取不是写在这个block中?或者expiration设置有误?  哪位大神帮我解答下这个问题。非常感谢!
[ossService setFederationTokenGetter :^{
//获取新的token
         NSURL * url = [ NSURL URLWithString :@"http://localhost:9080/list/token/" ];
         NSURLRequest *urlRequest = [ NSURLRequest requestWithURL :url cachePolicy :NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval : 10.0f ]; //maximal timeout is 30s

        NSOperationQueue *queue = [[NSOperationQueue alloc ] init ];
        [ NSURLConnection sendAsynchronousRequest:urlRequest queue:queue completionHandler:^( NSURLResponse *response, NSData *data, NSError *connectionError) {
             if ([data length] > 0 && connectionError == nil) {
               object = [ NSJSONSerialization JSONObjectWithData:data
                                                                         options: kNilOptions
                                                                           error: nil];



                 NSLog( @"Successfully ");
            } else if ([data length] == 0 && connectionError == nil){
                 NSLog (@"Nothing was downloaded." );
            } else if (connectionError != nil){
                 NSLog( @"Error happened = %@",connectionError);
            }
        }];

         NSDictionary *tempfederation=[ object objectForKey: @"FederationToken"];
             accessKey = [tempfederation valueForKey: @"accesskeyid"];
             secretKey = [tempfederation valueForKey: @"accesssecret"];
             demotoken = [tempfederation valueForKey: @"securitytoken"];
         demoExpiration =  [ NSNumber numberWithInt:[[tempfederation   valueForKey: @"expiration"] intValue]];
        OSSFederationToken   *federationToken = [[OSSFederationToken alloc ] initWithAk :accessKey sk :secretKey tempToken :demotoken expiration :demoExpiration ];

             return federationToken;


      
    }];

展开
收起
佛缘书法 2015-10-05 16:31:48 6689 0
3 条回答
写回答
取消 提交回答
  • ReSTSFederationToken过期时间不起作用
    构造OSSFederationToken的demoExpiration是一个单位为秒的值,尝试在每次构造OSSFederationToken前打印这个值,看下是否符合预期。
    2015-10-10 16:44:28
    赞同 展开评论 打赏
  • 回 楼主(佛缘书法) 的帖子
    这个接口现在不用了。你看一下有替代的接口
    2015-10-08 17:03:04
    赞同 展开评论 打赏
  • ReSTSFederationToken过期时间不起作用
    /以下是业务服务器返回的token内容,"expiration":"1444035134" 是1970年以来的秒数。


    生成的 java 方法是:
    long expirationtime=0;
    expirationstr=response.getCredentials().getExpiration();
    java.util.Date date = new DateTime( expirationstr ).toDate();
    expirationtime = date.getTime()/1000;
    //以下是业务服务器返回的token json内容{"FederationToken":{"expiration":"1444035134","accesskeyid":"STS.z1Toj0uqcEXsTYwboWyS","accesssecret":"Hhs4yDhjMoLaNuL3jAQ4GMJkJgqsZbHS2jfd1Mf4","securitytoken":"CAESrQMIARKAAYGoz50R7amNnrZZAjrB/AaceP8Lpp6jQjZEFCIPmTvG8PlLdUVJlhndBMnBndxUA8QjwZEg4Oo89ZcDnE01ID3VouOON4zKN1gbvgWB5WmNVsu1D1KAsUwNh+RqgV5TxTNavC4+P9yCoGfiiAU1/rZdE7aUBWUoPKIQ804NvXV7GhhTVFMuejFUb2owdXFjRVhzVFl3Ym9XeVMiEjM1MjA5MzU0Mjk5NTExNzEzOSoFuZ3NoZW5nMNWFzrmDKjoGUnNhTUQ1QpcBCgExGpEBCgVBbGxvdxI2CgxBY3Rpb25FcXVhbHMSBkFjdGlvbhoeCg1vc3M6R2V0QnVja2V0Cg1vc3M6R2V0T2JqZWN0ElAKDlJlc291cmNlRXF1YWxzEghSZXNvdXJjZRo0ChdhY3M6b3NzOio6KjpyZWxlYXNlbGlmZQoZYWNzOm9zczoqOio6cmVsZWFzZWxpZmUvKkoQMTg4ODkwNzIyNzEzNTk2MVIFMjY4NDJaD0Fzc3VtZWRSb2xlVXNlcmAAahIzNTIwOTM1NDI5OTUxMTcxMzlyBGZhbmc="}}

    2015-10-05 16:33:58
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载