PHP之 关于腾讯云“请求签名Signature”踩的坑

时间:2024-05-23 15:10:28

Signature报错:

The provided credentials could not be validated. Please check your signature is correct。

前文引述:

做直播项目,如果你用的是腾讯云的云直播服务,那么,作为后端,不管是PHP、Java、Python,你肯定会接触一个用来“获取直播间状态的接口”,即【查看直播中的流】。因为,这个状态不是你库里存的是直播中,就是直播中,它,不是实时的,需要你从腾讯云那边请求获取哪些直播间正在直播,再更新到你们自己的直播间表里。这个接口,返回的是一个列表,包含所有正在直播的直播流。

【查看直播中的流】
文档地址:https://cloud.tencent.com/document/product/267/20472

正文吐槽:

进到这个文档,你会看到,请求参数,返回结果,及示例。作为一个正常的对外文档,这是,基本的配置,但是,但是,当我们看到请求参数的时候,就不由地会产生一个疑惑,如图:

PHP之 关于腾讯云“请求签名Signature”踩的坑

看见这句话,你怎么想,是只有上图所示的这几个参数呢,还是,还得加上所有的公共参数?注意,【图1】圈红的字“仅列出了接口请求的参数和部分公共参数”,其中的“仅”,这个字用的,真是耐人寻味,到底是,就用这个所谓的“以下请求参数”,还是,还得加上所有的公共参数,又或是,只加“输入参数”展示的这几个公共参数?非常不清楚!

你说你要么就全部列出来,让人一眼就明白,要么就说清楚,用哪几个,非特么整的糊里糊涂的,让人去猜,要知道,你面对的是上亿的用户啊,就这“表达”水平,还敢拿上“台面”,有多少人背后问候你祖宗,你知道么?你语文是跟你师妹学的吧,整的朦朦胧胧的,谈恋爱呢?!

看到这,肯定有人会点击【公共请求参数】那几个蓝色的字,进到,功能参数页面:
https://cloud.tencent.com/document/api/267/20459

进到这个页面,你会看到【签名方法V3】,【签名方法V1】两个大标题,若,初来乍到者,乍一看,就迷糊了,我该用哪个,这又是一个不清楚的地方,而且,文首,也没有给你说明,这两个大标题的使用场景。并非本人矫情,我觉得作为腾讯这么大的平台,你写出来的东西,应该通俗易懂,简洁明了,否则,就是给小马哥丢脸!

这倒还不算事,对照前面的几个“部分功能参数”,还能确定应该是【前面方法V1】对应的一大堆“参数”。

但是,到了下面,你就得注意了:

PHP之 关于腾讯云“请求签名Signature”踩的坑

“请求签名”,这个参数,可是,至关重要,所有的请求腾讯云相关的东西,没有这个,就相当于去仓库没拿钥匙!

如果你忽略,“具体计算方法参见”后的那几个字,而是,贸贸然,去搜“签名方法”,你可能会搜到这个地址:
https://cloud.tencent.com/document/product/267/4709

PHP之 关于腾讯云“请求签名Signature”踩的坑

签名算法,咦,不就是这个吗,还能看到“Signature”的字样,如果你继续看下去,你就会如同出了《少年包青天》里的雁不归竹林的那口井,越走越远,远走越不知道该往哪走,最后,你就会发现这特么变成了一个恐怖故事!【捂脸】

PHP之 关于腾讯云“请求签名Signature”踩的坑

是的,这是个坑!不是这个文档!!!【捂脸】

要注意“具体计算方法参见”后的那几个字:“接口鉴权文档”。这个在?看到这里,很多人都可能会困惑,为毛这里不加个“蓝字 跳转连接”?为毛,我又想问候你祖宗了,写文档的那个“隐”!小孩子写不完作业都懂得熬夜,你特么怎么能偷懒呢?啊,你知不知道,就你的这一个懒,害得小马哥被多少开发人员骂?人家是老总,就得背你这个锅,凭什么?!哎,对了,“微信支付”的文档,是不是也特么是你写的?!!【砍刀】

PHP之 关于腾讯云“请求签名Signature”踩的坑

看着这明晃晃的几个大字,你能不“想入非非”?是的,我看见“云直播API2017”那几个大字了,但我知道,那是毛?!

或许,你会找到“接口鉴权”,可是,你可能会,“咦,怎么回有两个?”这就是不加“蓝字 链接”的后果,知道,别人为什么会骂你了也,写文档的那个,“隐”,你个SB。

PHP之 关于腾讯云“请求签名Signature”踩的坑

众里寻他千百度,好想一掌劈死你!是的,终于找见了,见下:
https://cloud.tencent.com/document/api/267/20460

PHP之 关于腾讯云“请求签名Signature”踩的坑

注意这张图,是不是“四层相识”呢?没错,前面就有一张,贴出来,对比一下:

PHP之 关于腾讯云“请求签名Signature”踩的坑

真假孙悟空,你说坑不坑!!【捂脸】

都让人不知道该说什么好了,跟迷宫似的,一只手伸出去,结果出现两只,如同见鬼一般,是的,这就是为什么说是恐怖故事的原因了。

问题原因:
 

PHP之 关于腾讯云“请求签名Signature”踩的坑

PHP攻城狮,使用http_build_query()函数的,一定要记得使用RFC3986的编码,否则,签名也会报错!
切记!!不过,最好,还是用拼接,出错少:
其他的,就没什么了,对了,往下拉,有彩蛋(代码)!其实,这东西挺简单的,但就是因为这个偷懒的淫,让很多人悲愤不已!好了,就到这吧,不说了!

The END!                                                         2020/3/22 01:36