欢迎您来到腾讯云!积分商城

腾讯云腾讯云论坛

 找回密码
 立即注册
忘了密码?

扫一扫,访问微社区

快捷导航
搜索
查看: 600|回复: 3

[经验分享] 分享智能图像AI和万象优图CI的签名示例(PHP版)

[复制链接]

13

主题

0

好友

1820

积分

攻城师[LV3]

Rank: 3Rank: 3Rank: 3

云币
7122
威望
1820
发表于 2018-6-1 14:08:26 |显示全部楼层 |未分类
  1. <?php
  2. $appid = '1250000000';
  3. $bucket = 'BucketName';  // 对象存储控制台生成的存储桶名称为:BucketName-1250000000时,这里只需填写BucketName即可,后面的APPID不需要,否则会报签名不通过错误。
  4. $secret_id = 'AKIDmO5cPW3LDGJsarDEDcQ1FprZXXXXX';
  5. $secret_key = 'TyubfN5wHenWLJqX7DWyUXPOpXXXX';
  6. $expired = time() + 10000;
  7. $onceExpired = 0;
  8. $current = time();
  9. $rdm = rand();
  10. $userid = "0";
  11. $fileid = "";

  12. $srcStr = 'a='.$appid.'&b='.$bucket.'&k='.$secret_id.'&e='.$expired.'&t='.$current.'&r='.$rdm.'&u='.$userid.'&f=';
  13. $signStr = base64_encode(hash_hmac('SHA1', $srcStr, $secret_key, true).$srcStr);
  14. //最终得到的多次有效签名(不绑定资源)
  15. echo $signStr."\n";

  16. $srcWithFile = 'a='.$appid.'&b='.$bucket.'&k='.$secret_id.'&e='.$expired.'&t='.$current.'&r='.$rdm.'&u='.$userid.'&f='.$fileid;
  17. $srcWithFile = base64_encode(hash_hmac('SHA1', $srcWithFile , $secret_key, true).$srcWithFile );
  18. //最终得到的多次有效签名(绑定资源)
  19. echo $srcWithFile ."\n";

  20. $srcStrOnce = 'a='.$appid.'&b='.$bucket.'&k='.$secret_id.'&e='.$onceExpired .'&t='.$current.'&r='.$rdm.'&u='.$userid.'&f='.$fileid;
  21. $signStrOnce = base64_encode(hash_hmac('SHA1',$srcStrOnce,$secret_key, true).$srcStrOnce);
  22. //单次有效签名
  23. echo $signStrOnce."\n";
  24. ?>
复制代码
注意:
1.智能图像目前仅能使用主账号的APPID来生成签名,协作者和子账号都不行的。
必须使用API密钥,而非项目密钥,除非以前的老用户,只能使用项目密钥。
2.生成万象优图的签名是需要Bucket的,既存储桶,可以在
对象存储COS控制台 创建,智能图像的签名不需要存储桶,万象优图才需要,万象优图才需要,万象优图才需要,重要的事情说三遍!!!
3.如果在对象存储COS控制台创建的Bucket名称为:BucketName-APPID(APPID为125开头的),在生成签名的时候请将APPID去掉,例如填写为:BucketName即可。
4.另外腾讯云侧是不会协助调试代码的,关于代码问题,需要自己更改调试,仅会协助排查API和SDK问题。

5.APPID是字符串格式,在调试API接口的时候可不要填写为数字格式哦,会报错的。



13

主题

0

好友

1820

积分

攻城师[LV3]

Rank: 3Rank: 3Rank: 3

云币
7122
威望
1820
发表于 2018-6-1 14:26:21 |显示全部楼层
已使用上面提供的PHP代码生成签名来测试API接口成功,测试结果如下图:
智能图像AI_3.png

智能图像AI_1.png

智能图像AI_2.png
回复

使用道具 举报

13

主题

0

好友

1820

积分

攻城师[LV3]

Rank: 3Rank: 3Rank: 3

云币
7122
威望
1820
发表于 2018-6-1 14:57:23 |显示全部楼层
生成签名须注意的事项:
1.获取SecretId/SecretKey密钥:https://console.cloud.tencent.com/cam/capi
注意:必须使用API密钥,而非项目密钥,除非以前的老用户,只能使用项目密钥。
2.创建存储桶:https://console.cloud.tencent.com/cos/bucket
注意:如果在对象存储COS控制台创建的Bucket名称为:BucketName-APPID(APPID为125开头的),在生成签名的时候请将APPID去掉,例如填写为:BucketName即可。经测试智能图像的存储桶不需要创建,不填写存储桶名称也可以通过签名。但万象优图需要创建存储桶,毕竟万象优图需要存储桶来存储图片。
3.签名是拼接后进行Base64编码生成出来的,此处使用的是标准的 Base64 编码,不是 urlsafe 的 Base64 编码
4.签名也是分单次和多次的,具体适用场景参见 签名适用场景。

关于第3事项中的Base64编码问题可以参考以下示例
  1. <?php
  2. $srcStr = 'a=1252821871&b=tencentyun&k=AKIDgaoOYh2kOmJfWVdH4lpfxScG2zPLPGoK&e=1438669115&t=1436077115&r=11162&u=0&f=';
  3. $signStr = base64_encode(hash_hmac('SHA1', $srcStr, 'nwOKDouy5JctNOlnere4gkVoOUz5EYAb', true).$srcStr);
  4. //最终得到的多次有效签名(不绑定资源)
  5. echo $signStr."\n";
复制代码
得到的签名字符串为:
  1. p2Y5iIYyBmQNfUvPe3e1sxEN/rZhPTEyNTI4MjE4NzEmYj10ZW5jZW50eXVuJms9QUtJRGdhb09ZaDJrT21KZldWZEg0bHBmeFNjRzJ6UExQR29LJmU9MTQzODY2OTExNSZ0PTE0MzYwNzcxMTUmcj0xMTE2MiZ1PTAmZj0=
复制代码
如果你生成的签名字符串也是一样的,说明base64编码是正确的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册
您需要登录后才可以发帖 QQ登录

联系我们|腾讯云平台|积分商城|腾讯云官方论坛    

GMT+8, 2018-9-19 19:58 , Processed in 1.177417 second(s), 31 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部