术语 解释 参考文档
appID 微信公众号的ID,微信管理平台可以查到。 https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842
REDIRECT_URI 打开页面后,微信会重定向到的目标页面,也就是咱们自己的页面。使用 urlEncode 对链接进行处理。
code code作为换取access_token的票据,每次用户授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期。(code是重定向回来带回来的)
url 当前页面的url,由前端传递给后端。签名的时候需要用到。
secret 公众号的appsecret,微信管理平台可以获取。
access_token 网页授权接口调用凭证,用来换取jsapi_ticket。服务端存一下。

签名

noncestr 后端生成一串随机字符串。 https://mp.weixin.qq.com/wiki?action=doc&id=mp1421141115&t=0.9690201838825749#-1-js-sdk-
jsapi_ticket jsapi_ticket是公众号用于调用微信JS接口的 临时 票据,有效期 7200 秒(2小时)。服务端需要自己存一下,不要过多调用,数量有限。(secret) 拿到的。
url 网页授权接口调用凭证,用来换取jsapi_ticket。服务端存一下。
signature 得到的签名结果。
timestamp 当前的时间戳。

# 微信 JsSDK 使用权限

通过打开微信的固定URL,通过微信的webview重定向到实际要打开的页面。
要打开的页面通过query的方式传递给微信的固定域,微信重定向回来之后,用户同意授权(可以无感知)携带 code 。
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
前端通过ajax 把 code 和当前 url 发给后端。
后端通过 code 向微信换取 access_token。
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

如果access_token 超时,需要用到返回数据中的 refresh_token(没有写到文档中,请前往微信文档查询) 进行刷新。如果refresh_token也失效了(30天),需要用户重新授权(第一步)。
所以一定要检验token是否有效
服务端用 上一步 拿到的access_token 采用http GET方式请求获得jsapi_ticket。
签名
自己生成 noncestr 、timestamp + 上一步拿到的 jsapi_ticket + 第3步获取到的 url 。
排序后进行签名。得到 signature。 文档
把 noncestr timestamp signature 通过第二步的请求返回给前端。