在企业微信开发中,jsapi_ticket
是用于生成 JS-SDK 签名的重要凭证。通过 jsapi_ticket
,企业可以在网页中使用企业微信的 JS-SDK,调用诸如拍照、分享、定位等功能。
获取 jsapi_ticket
的步骤
-
获取
access_token
:-
首先,你需要获取企业的
access_token
。access_token
是企业调用企业微信 API 的全局唯一凭证。 -
你可以通过以下接口获取
access_token
:复制
GET https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=YOUR_CORPID&corpsecret=YOUR_CORPSECRET
-
YOUR_CORPID
是企业 ID,可以在企业微信管理后台找到。 -
YOUR_CORPSECRET
是应用的 Secret,可以在企业微信管理后台的应用详情中找到。
-
-
-
获取
jsapi_ticket
:-
使用上一步获取的
access_token
,调用以下接口获取jsapi_ticket
:复制
GET https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=ACCESS_TOKEN
-
返回的 JSON 数据中会包含
ticket
字段,这就是jsapi_ticket
。
-
jsapi_ticket
的使用
获取到 jsapi_ticket
后,你可以使用它来生成 JS-SDK 的签名(signature
)。签名生成的步骤如下:
-
生成随机字符串
noncestr
:-
生成一个随机字符串,通常使用 UUID 或者时间戳加随机数的方式生成。
-
-
生成时间戳
timestamp
:-
生成当前的时间戳(以秒为单位)。
-
-
生成签名
signature
:-
将
jsapi_ticket
、noncestr
、timestamp
和当前页面的 URL(不包括#
及其后面部分)按照字典序排序后拼接成一个字符串。 -
对这个字符串进行 SHA-1 加密,得到签名
signature
。
-
示例代码(Python)
python
复制
import hashlib import time import uuid import requests def get_jsapi_ticket(access_token): url = f"https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token={access_token}" response = requests.get(url) return response.json().get('ticket') def generate_signature(jsapi_ticket, url): noncestr = str(uuid.uuid4()) timestamp = str(int(time.time())) string = f"jsapi_ticket={jsapi_ticket}&noncestr={noncestr}×tamp={timestamp}&url={url}" signature = hashlib.sha1(string.encode('utf-8')).hexdigest() return noncestr, timestamp, signature # 示例 access_token = "YOUR_ACCESS_TOKEN" jsapi_ticket = get_jsapi_ticket(access_token) url = "https://example.com" noncestr, timestamp, signature = generate_signature(jsapi_ticket, url) print(f"noncestr: {noncestr}") print(f"timestamp: {timestamp}") print(f"signature: {signature}")
注意事项
-
jsapi_ticket
的有效期:-
jsapi_ticket
的有效期通常为 7200 秒(2 小时),过期后需要重新获取。
-
-
缓存
jsapi_ticket
:-
由于
jsapi_ticket
的获取频率有限制,建议在服务器端缓存jsapi_ticket
,避免频繁调用接口。
-
-
安全性:
-
jsapi_ticket
和access_token
都是敏感信息,不要泄露给客户端或第三方。
-
通过以上步骤,你可以在企业微信开发中成功获取并使用 jsapi_ticket
。