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

前言

  • 由于之前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也就一个小时的时间,结果搞了一天。

文中引用博客

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,663评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,188评论 19 139
  • 先定个小目标,每天赚一顿伙食费,哈哈哈,现在能赚一天的伙食费了,你知道为啥不?因为我在玩呱呱赚[憨笑][憨笑][憨...
    广誉哥哥阅读 2,047评论 1 1
  • 哈哈哈是谁会是实话实说说不是说和山山水水跋山涉水好不是准备不足不足不足不足把 v 中不是说不准备准备不足
    Zoe_ayuan阅读 1,855评论 0 0
  • 说一说我父母的故事吧。 我爸以前是村医,年轻时在农场干出了名气,十里八乡有啥小病都来找他。 后来我爸和我妈结了婚,...
    悠悠涉长道阅读 1,441评论 0 0

友情链接更多精彩内容