美文网首页
腾讯云iOS上传签名的有关说明

腾讯云iOS上传签名的有关说明

作者: 文达IOS | 来源:发表于2017-05-25 16:45 被阅读206次

    前言

    • 由于之前app版本采用的是socket文件上传,上传文件速度和稳定都没有保障,所以老大决定使用腾讯云,进行上传测试,由于测试下来效果还不错,60M大概十分钟的样子,满足了我们的业务需求,故采用腾讯云的SDK进行文件上传的操作。

    技术误区

    • 在嵌入腾讯云的SDK的时候,出现的问题就是签名无法通过

    解决方法

    • 在腾讯云的官方文档中有关于签名算法的描述

    • 对比JAVA代码进行秘钥生成方法的封装

    代码如下

    //生成签名的方法
    -(NSString*)caculateSign{
        
        NSArray *timeArray =[self getCurrentTimestamp];
        
        
        NSInteger random = arc4random()%100000000;
        
    // 其中APPID,BUCKETNAME,QCLOUDSECRET,分别对应的产品的appid,bucketName,secretid,在腾讯云的控制平台上都可以找到
    
        NSString *original =[NSString stringWithFormat:@"a=%@&b=%@&k=%@&e=%@&t=%@&r=%ld&f=",APPID,BUCKETNAME,QCLOUDSECRET,timeArray.lastObject,timeArray.firstObject,random];
    
       
    //这个地方是HmacSHA1加密算法的封装
        NSData *temp =[HmacSHA1 HmacSha1:QCLOUDKEY data:original];
        
    //官方文档中描述的
    注 2:由于使用了 HMAC 算法,计算 SignTmp 的结果为二进制字符串,因此建议将算法写在同一函数中实现。单独输出 SignTmp 可能导致拼接后的字串有误。
    
    //一定要将生成的字符加密之后转成NSData的对象,然后把original转成NSData进行拼接,[不是两个字符串的拼接,一定要注意]
    
        NSMutableData *resultData=[[NSMutableData alloc] initWithData:temp];
    
        [resultData appendData:[original dataUsingEncoding:NSUTF8StringEncoding]];
        
        //最后用base64编码
        return [resultData base64EncodedStringWithOptions:0];
    }
    
    //获取当前时间和失效时间
    -(NSArray*)getCurrentTimestamp{
        
        NSDate* date = [NSDate dateWithTimeIntervalSinceNow:0];
        
        NSTimeInterval a=[date timeIntervalSince1970];
        //我的签名有效期为90天,7776000为秒,所有签名中的时间都是以秒为单位
        NSTimeInterval e = a+7776000;
        
        
        NSString *timeString = [NSString stringWithFormat:@"%0.f", a];//转为字符型
        
        NSString *expireTime =[NSString stringWithFormat:@"%0.f",e];
        
        return @[timeString,expireTime];
    }
    
    
    

    吐槽

    • 腾讯的demo写的真的不咋地,我感觉作为一款让别人用的产品还是应该用心

    • 最后如果遇到问题,多看一下他们的错误码表,对应自己的错误状态,迅速修正,我以为当时嵌入一个SDK也就一个小时的时间,结果搞了一天。

    文中引用博客

    相关文章

      网友评论

          本文标题:腾讯云iOS上传签名的有关说明

          本文链接:https://www.haomeiwen.com/subject/eudzxxtx.html