Skip to content

9 JS SDK验证代码

345280563@qq.com edited this page Jun 9, 2016 · 4 revisions

JS-SDK验证代码

该验证实质上就是一个前端的JS与后台做一个ajax交互,由JS向后台ajax提交一个参数url,url即为当前的地址栏url,再将后台返回的结果异步写入微信JS-SDK的wx.config代码中。 不过也可以在跳转进入页面之前就做好验证,然后将验证的结果同时写入wx.config代码中。我这里采用的是异步验证。

完整代码如下。

后台Java算法计算

java import com.itfvck.wechatframework.api.jsapi.JsApiManager; import com.itfvck.wechatframework.api.jsapi.JsApiParam;

/**

  • 微信JS-SDK权限验证
  • @param url
  •        JS-SDK所在的当前页面地址
    
  • @return
  • @author */ @RequestMapping(value = "weixin/signatureJSSDK") @ResponseBody public Map<String, Object> signatureJSSDK(String url) { Map<String, Object> map = new HashMap<>(); JsApiParam signature = null; try { signature = JsApiManager.signature(url); } catch (Exception e) { map.put("msg", "验证错误"); } map.put("result", signature); return map; }

## 前端JS

```javascript```

var url = window.location.href;
signatureJSSDK();

// config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
wx.error(function(res) {
	alert(res);
	console.log(res);
});

/**
 * 微信微信JS-SDK验证
 */
function signatureJSSDK() {
	$.ajax({
		type : 'POST',
		url : 'weixin/signatureJSSDK',//注意该处的访问地址必须正确
		data : {
			"url" : url
		},
		dataType : 'json',
		success : function(data) {
			var result = data.result;
			if (result) {
				wx.config({
					debug : true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
					appId : result.appid, // 必填,公众号的唯一标识
					timestamp : result.timeStamp, // 必填,生成签名的时间戳
					nonceStr : result.nonceStr, // 必填,生成签名的随机串
					signature : result.signature,// 必填,签名,见附录1
					jsApiList : [// 必填,需要使用的JS接口列表,所有JS接口列表见附录2
					'onMenuShareTimeline', 'onMenuShareAppMessage',
							'onMenuShareQQ', 'onMenuShareWeibo',
							'onMenuShareQZone', 'startRecord', 'stopRecord',
							'onVoiceRecordEnd', 'playVoice', 'pauseVoice',
							'stopVoice', 'onVoicePlayEnd', 'uploadVoice',
							'downloadVoice', 'chooseImage', 'previewImage',
							'uploadImage', 'downloadImage', 'translateVoice',
							'getNetworkType', 'openLocation', 'getLocation',
							'hideOptionMenu', 'showOptionMenu',
							'hideMenuItems', 'showMenuItems',
							'hideAllNonBaseMenuItem', 'showAllNonBaseMenuItem',
							'closeWindow', 'scanQRCode', 'chooseWXPay',
							'openProductSpecificView', 'addCard', 'chooseCard',
							'openCard' ]
				});
			}
		}
	});
}

wechat-framework

技术支持

欢迎有志之士一起加入。

Clone this wiki locally