因项目须要,发布的H5移动端页面中须要支持微信分享,好比分享到朋友圈,分享到朋友等。在借助node.js全栈技术能力状况下,前端研发人员可利用这一特性来进行依业务实际需求的API接口封装。
主要注意地方是:javascript
1.使用到了
cgi-bin/token
获取token和签名
2.拿到token再调用cgi-bin/ticket/getticket
获取ticket
3.拿到ticket以后再依据传入的[noncestr] [timestamp] [url]
生成能够与腾讯服务器匹配校验的签名串
4.参考资料: 微信公从平台签名实现
5.本文所指内容使用egg.js框架实现html
经过需求分析,咱们知道这个接口的请求与返回应该包含:分享标题,分享描述,分享图片,分享连接,返回校验签名等内容。详细描述以下:
请求参数:前端
参数名 | 参数说明 | 举例 |
---|---|---|
link | 分享连接 | www.yourdomain.com/montage/ind… |
imgUrl | 分享封面图片 | www.yourdomain.com/montage/ima… |
title | 分享标题 | 你的分享标题 |
desc | 分享描述 | 你的分享描述 |
返回结果:
java
参数名 | 参数说明 | 举例 |
---|---|---|
code | 状态码 | 200 |
message | 状态描述 | 请求成功 |
data | 返回数据 | {} |
- wxAccountInfo | 签名信息 | {} |
-- appId | 微信公众平台分配ID | 'd0ddsldf3542' |
-- timestamp | 签名时间戳 | 1519265659 |
-- nonceStr | 加密字符串 | M4vhCXM |
- wxShareInfo | 透传分享信息 | 略 |
-- ... | 透传分享信息 | 略 |
假设咱们的接口名字定义为/api/service/getWeChatSignature
那么须要进行如下内容的路由配置。node
app.controller.api.index.index.getWeChatSignature
为控制器路径。
微信分享签名配置,须要抽离到外部公共配置文件中,对于egg.js框架来讲,约定于配置,咱们则只须要将相关配置放置于config/config.default.js
。ios
接下来即是实现controller与业务相关的功能开发,利用egg.js service
与controller
理念,咱们将调用微信接口逻辑部份抽离至单独的service
中git
获取了token与ticket以后则进入关键一步,签名生成实现步骤。 须要 jsapi_ticket
noncestr
timestamp
url
参与签名 这里的noncestr
须要注意须要生成随机字符串github
timestamp
则须要注意单位是
秒
,所以须要进行转换
sha1
签名
http://localhost:7001/api/service/getWeChatSignature
复制代码
POST
复制代码
{
link: 'https://www.yourdomain.com/montage/index.html', // 分享连接
imgUrl: 'https://www.yourdomain.com/montage/images/cover.jpg', // 分享封面图片
title: '你的分享标题', // 分享标题
desc: '一些描述...' // 分享描述
}
复制代码
{
"code":200,
"message":"请求成功",
"data":{
"wxAccountInfo":{
"appId":"your app id", // appid
"timestamp":1519265659, // 时间截
"nonceStr":"M4vhCXM", // 加密字符串
"signature":"your signature no like.. f5617cf42f" // 比对签名
},
"wxShareInfo":{
"imgUrl":"https://mp.yourdomain.com/montage/images/cover.jpg", // 分享封面地址
"link":"https://mp.yourdomain.com/montage/index.html", // 分享连接地址
"desc":"一此描述。。。", // 分享描述
"title":"分享标题" // 分享标题
}
}
}
复制代码