本文主要为您介绍移动推送 TPNS 签名认证方法。
采用 HMAC-SHA256 算法,根据 SecretKey 生产签名信息。通过校验签名进行鉴权,安全性更好,推荐使用。
参数 | 说明 |
---|---|
AccessId | 移动推送 TPNS 后台分配的应用 ID,请前往 【移动推送 TPNS 控制台】>【配置管理】>【基础配置】 获取 |
SecretKey | 移动推送 TPNS 后台分配的 SecretKey,与 AccessId 对应,请前往 【移动推送 TPNS 控制台】>【配置管理】>【基础配置】 获取 |
Sign | 接口签名方式 |
TimeStamp | 请求时间戳 |
待签名字符串 = ${TimeStamp} + ${AccessId} + ${请求body}
Sign = Base64(HMAC_SHA256(待签名字符串, SecretKey))
HTTP 协议 header 中 除了通用头部协议外,需要携带当前请求时间戳、 AccessId、 以及签名 Sign 信息,具体参数如下:
Header 中参数 Key | 含义 | 是否必须 |
---|---|---|
Sign | 请求签名 | 是 |
AccessId | 应用 ID | 是 |
TimeStamp | 请求时间戳 | 是 |
具体 HTTP 请求报文如下:
POST /v3/push/app HTTP/1.1
Host: api.tpns.tencent.com
Content-Type: application/json
AccessId: 1500001048
TimeStamp: 1565314789
Sign: Y2QyMDc3NDY4MmJmNzhiZmRiNDNlMTdkMWQ1ZDU2YjNlNWI3ODlhMTY3MGZjMTUyN2VmNTRjNjVkMmQ3Yjc2ZA==
{"audience_type": "account","platform": "android","message": {"title": "test title","content": "test content","android": { "action": {"action_type": 3,"intent": "xgscheme://com.xg.push/notify_detail?param1=xg"}}},"message_type": "notify","account_list": ["5822f0eee44c3625ef0000bb"] }
待加密字符串=15653147891500001048{"audience_type": "account","platform": "android","message": {"title": "test title","content": "test content","android": { "action": {"action_type": 3,"intent": "xgscheme://com.xg.push/notify_detail?param1=xg"}}},"message_type": "notify","account_list": ["5822f0eee44c3625ef0000bb"] }
secretKey =1452fcebae9f3115ba794fb0fff2fd73
。hashcode= hmac-sha256(待签名字符串, secretKey)
得到 hashcode="cd20774682bf78bfdb43e17d1d5d56b3e5b789a1670fc1527ef54c65d2d7b76d"
得到 Sign=Base64(hashcode)
Sign="Y2QyMDc3NDY4MmJmNzhiZmRiNDNlMTdkMWQ1ZDU2YjNlNWI3ODlhMTY3MGZjMTUyN2VmNTRjNjVkMmQ3Yjc2ZA=="
#!/usr/bin/env python
import hmac
import base64
from hashlib import sha256
s = '15653147891500001048{"audience_type": "account","platform": "android","message": {"title": "test title","content": "test content","android": { "action": {"action_type": 3,"intent": "xgscheme://com.xg.push/notify_detail?param1=xg"}}},"message_type": "notify","account_list": ["5822f0eee44c3625ef0000bb"] }'
key = '1452fcebae9f3115ba794fb0fff2fd73'
hashcode = hmac.new(key, s, digestmod=sha256).hexdigest()
print base64.b64encode(hashcode)
7月20日,腾讯云数据库SQL Server基础版(单机)正式上线。云数据库SQL Server ...
1. 接口描述 接口请求域名: as.tencentcloudapi.com 。 本接口(DisableAutoSca...
网站 虚拟主机 选多大好?很多新手站长,对于网站虚拟主机还不是很了解,不知道...
最近有人问了一个很好的问题: 我们企业已经从0到1建立了数据仓库,应该怎么样才...
本教程介绍如何在Windows系统ECS实例上手动部署MySQL数据库。 前提条件 使用本教...
中文 域名 需要备案吗?中文域名和 英文域名 备案要求一样,买了中文域名是否需...
以下是我收集的一些宝藏网站,现在分享给你们~喜欢的话可以点个赞哦! 1.烧屏网:...
服务器租用特别注意的细节 服务器对于网站的重要性相信很多人都是了解的,对提高...
调用DescribeElasticityAssurances查询弹性保障服务的详细信息。 调试 您可以在O...
CDN加速原理 当用户访问使用CDN服务的网站时,本地DNS服务器通过CNAME方式将最终...