看我如何接入腾讯API,以及生成sig签名~\(≧▽≦)/~

本文详细介绍了如何接入腾讯API并生成sig签名,包括构造源串、构造密钥和生成签名值的步骤。在实际操作中,特别强调了URL编码和参数排序的重要性,还提到了Python中字符串处理的注意事项。最后,解释了生成签名的目的是确保数据来源的正确和合法性。
摘要由CSDN通过智能技术生成

以腾讯上传用户在应用中的等级相关信息为例。接口详情在此【"http://wiki.open.qq.com/wiki/v3/user/get_info"】

在set_achievement这个接口中,接口参数包括openid, openkey, appid, pf, sig, user_attr, format

此接口最后的请求示例为

http://openapi.tencentyun.com/v3/user/set_achievement?
openid=B624064BA065E01CB73F835017FE96FA&
openkey=5F154D7D2751AEDC8527269006F290F70297B7E54667536C&
appid=2&
pf=qzone&
format=json&
user_attr=%7B%22level%22%3A10%7D&
sig=9999b41ad0b688530bb1b21c5957391c

 这里除了sig其他参数都只是经过了URL编码而已,所以本文的重点也在如何生成sig。 

点我查看详细签名规则

在写代码的过程中我们也可以思考下为什么需要生成签名~

Step 1. 构造源串

第1步:将请求的URI路径进行URL编码(URI不含host,URI示例:/v3/user/get_info)。请开发者关注:URL编码注意事项,否则容易导致后面签名不能通过验证。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是示例代码: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include "openssl/hmac.h" #define APPID 140000000 #define SECRETKEY "your_secret_key" #define EXPIRETIME 86400 char* get_user_sig(int sdk_appid, const char* secret_key, const char* identifier, int expire_time) { char* user_sig = NULL; char* content = NULL; unsigned char hmac[32]; unsigned int hmac_len = ; char expire_str[16]; char sdk_appid_str[16]; char* raw_content = NULL; sprintf(expire_str, "%d", expire_time); sprintf(sdk_appid_str, "%d", sdk_appid); raw_content = (char*)malloc(strlen(identifier) + strlen(expire_str) + 1); sprintf(raw_content, "%s%d", identifier, expire_time); content = (char*)malloc(strlen(raw_content) + strlen(sdk_appid_str) + 1); sprintf(content, "%s%s", sdk_appid_str, raw_content); HMAC(EVP_sha256(), secret_key, strlen(secret_key), (unsigned char*)content, strlen(content), hmac, &hmac_len); user_sig = (char*)malloc(hmac_len * 2 + 1); for (int i = ; i < hmac_len; i++) { sprintf(user_sig + i * 2, "%02x", hmac[i]); } user_sig[hmac_len * 2] = '\'; free(raw_content); free(content); return user_sig; } int main() { int sdk_appid = APPID; const char* secret_key = SECRETKEY; const char* identifier = "test_user"; int expire_time = EXPIRETIME; char* user_sig = get_user_sig(sdk_appid, secret_key, identifier, expire_time); printf("userSig: %s\n", user_sig); // TODO: 使用 userSig 进行腾讯IM即时通信 free(user_sig); return ; } ``` 注意:示例代码中的 `APPID` 和 `SECRETKEY` 需要替换为你自己的腾讯云账号的应用 ID 和密钥。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值