0

1.需求是使用图片裁剪,水印api之后,将生成的图片另存为新的文件,根据文档处理结果另存为中的描述,试用sk编码,签名,拼接ak参数之后,浏览器中能正常签名并转存,成功后能根据转存后的文件名获取到该图片。可是当在iOS中进行签名转存时,因为参数中存在竖线|,url无效,需要转义成%7C,可是转换之后就各种签名失败了。
2.尝试过nsurlconnection,nsurlsession,afn,curl。都不行,不转义报url格式错误,转义之后报签名失败的错误
3.尝试过:

   1.hmacsha1加密时用竖线,get请求时用%7C,提示签名失败
   2.hmacsha1加密时用%7C,get请求时也用%7C,仍旧签名失败

iOS里应该如何?签名代码如下:

NSString *strURI = @"beiletest:asdfg.jpg";

NSString *imageURL = @"*imageurl*";

NSString *strEncodeURI = [QNUrlSafeBase64 encodeString:strURI];

NSString *signStr = [NSString stringWithFormat:@"%@|saveas/%@", imageURL, strEncodeURI];

NSString *strEncodeSign = [bvc hmacsha1EncodeWithString:signStr screateKey:sk];

NSString *finalURI = [NSString stringWithFormat:@"http://%@/sign/%@:%@",signStr, ak, strEncodeSign];

NSString *sfu = [finalURI stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

1个回答

0

您好,生成鉴权token的操作不建议在客户端进行操作,主要是请求发送的时候有泄漏AK/SK的风险,会对账户的资源造成威胁,请您知晓。
可以使用客户端和服务端交互的方式,客户端在另存前像服务器发送资源另存的请求,服务器收到请求之后调用sdk已经封装好的接口来进行另存,操作执行成功之后将结果返回给客户端。

撰写答案