admin管理员组

文章数量:1530987

2024年6月26日发(作者:)

开宗明义,米扑科技在使用腾讯云的

API

接口签名中,按照官方示例开发

PHP

Python

的接口,经常会提示签名错误

1

2

3

4

5

6

7

8

9

{

"Response"

: {

"Error"

: {

"Code"

:

"ureFailure"

,

"Message"

:

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

},

"RequestId"

:

"1ee6ae98-a971-ad9f-4ecc-abcd69ea1234"

}

}

本文原文,请参见米扑博客:

Python

PHP

对腾讯云签名

hmac_sha256

算法实现

经过多次尝试探究,发现原因有二:

1

)腾讯云官方示例不严谨,没有

urlencode()

()

编码导致提示签名错误

2

)腾讯官方只提供了

PHP

示例,没有提供

Python

示例,两者签名函数有一些细节

直接给出干货,下面示例是

米扑科技

封装好的腾讯云签名函数,以飨读者。

腾讯云签名:

/document/api/377/4214

阿里云签名:

/document_detail/

米扑的官网:

PHP

签名示例

1

2

3

4

5

6

7

8

9

/**

*

签名并获取

URL

结果,

json

格式返回

*

* 1.

查询弹性

IP

列表

, DescribeAddresses

* 2.

解绑弹性

IP, DisassociateAddress

* 3.

释放弹性

IP, ReleaseAddresses

* 4.

公网

IP

转弹性

IP, TransformAddress

10

11

12

13

14

15

16

*

* @param string $req_action : DescribeAddresses, DisassociateAddress, ReleaseAddresses, TransformAddress

* @param string $params :

&

开头,

&xxx=yyy

*/

function

qcloud_eip_sign(

$req_action

=

'DescribeAddresses'

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

,

$req_region

=

'ap-beijing'

,

$req_extra_params

=

''

,

$retry_NUM

=3) {

global

$QCloud_SecretId

;

global

$QCloud_SecretKey

;

// $req_action='DescribeAddresses'

// $req_region = 'ap-beijing'; // ap-guangzhou

$req_method

=

'GET'

;

// GET POST

$req_api

=

'/v2/'

;

$req_version

=

'2017-03-12'

;

$req_timestamp

=

strtotime

(

date

(

'YmdHis'

));

// 1402992826

本文标签: 签名示例弹性提示错误