微信开发如何使用JS-SDK

手册/FAQ (497) 2016-04-08 13:37:12

一,绑定域名

登录到微信公众平台:

在公众号设置里面:      

微信开发如何使用JS-SDK

找到功能设置,填入JS接口安全域名:

微信开发如何使用JS-SDK

二,引入JS

1.<script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"> </script>  

三,通过config接口注入权限验证配置

感觉这里的调用还是相当繁琐的,希望微信能做个安全方便的接口来调用。

[javascript] view plain copy
 
1.//         wx.config({  
2.       //                debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。  
3.       //                appId: '<%=appId%>', // 必填,公众号的唯一标识  
4.       //                timestamp: <%=timestamp%>, // 必填,生成签名的时间戳  
5.       //                nonceStr: '<%=nonceStr%>', // 必填,生成签名的随机串  
6.       //                signature: '<%=Signature%>',// 必填,签名,见附录1  
7.       //                jsApiList: ['closeWindow'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2  
8.       //            });  

    wx对象提供了很多方法调用,而这些方法的返回值可以在config里面设置,方便调试的时候观察报错信息。
   appid,timestamp,noncestr,jsApiList都是比较好填写的参数,唯一比较麻烦的是签名。

   签名步骤比较小复杂: 

    
1./// <summary>  
2.       /// 生成签名  
3.       /// </summary>  
4.       /// <param name="jsapi_ticket">The jsapi_ticket.</param>  
5.       /// <param name="noncestr">The noncestr.</param>  
6.       /// <param name="timestamp">The timestamp.</param>  
7.       /// <param name="url">The URL.</param>  
8.       /// <returns>System.String.</returns>  
9.       /// <remarks>Editor:v-liuhch CreateTime:2015/6/1 18:20:43</remarks>  
10.       private string GetSignature()  
11.       {  
12.  
13.           WxAccount wa = WxAccountAdapter.Instance.LoadByCode(PubAccCode);//获取当前公众号  
14.           WebClientBase wcb = new WebClientBase();  
15.  
16.           //获取Access_token信息  
17.           string strAccess_token = wcb.RequestMyWebClient(EnumSubmitMethod.Get, "", "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + wa.AppID + "&secret=" + wa.AppSecret);  
18.           access_tokenEntity at = WxAPITools.JSONUtil<access_tokenEntity>.FromJsonToObject<access_tokenEntity>(strAccess_token);  
19.  
20.           string strJson = wcb.RequestMyWebClient(EnumSubmitMethod.Get, "", "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + at.access_token + "&type=jsapi");  
21.  
22.           jsapi_ticket jt = WxAPITools.JSONUtil<jsapi_ticket>.FromJsonToObject<jsapi_ticket>(strJson);//转化为对象  
23.           string url = HttpContext.Current.Request.Url.ToString();  
24.           url = url.IndexOf("#") >= 0 ? url.Substring(0, url.IndexOf("#")) : url;  
25.           string tmpStr = "jsapi_ticket=" + jt.ticket + "&noncestr=" + nonceStr + "×tamp=" + timestamp + "&url=" + url;  
26.           return FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");  
27.  
28.       }  
29.  
30.  
31.  
32.       /// <summary>  
33.       /// jsapi_ticket是公众号用于调用微信JS接口的临时票据  
34.       /// </summary>  
35.       /// <remarks>Editor:v-liuhch CreateTime:2015/6/1 18:25:27</remarks>  
36.       public class jsapi_ticket  
37.       {  
38.  
39.           public string errcode { get; set; }  
40.           public string errmsg { get; set; }  
41.           public string ticket { get; set; }  
42.           public string expires_in { get; set; }  
43.  
44.       }  
45.  
46.       /// <summary>  
47.       /// Class access_tokenEntity  
48.       /// </summary>  
49.       /// <remarks>Editor:v-liuhch CreateTime:2015/6/1 21:08:07</remarks>  
50.       public class access_tokenEntity  
51.       {  
52.           public string access_token { get; set; }  
53.           public string expires_in { get; set; }  
54.  
55.       }  

需要注意的是URL地址到底取的是哪一部分;获取数据的方式都是get;对所有待签名参数按照字段名的ASCII 码从小到大排序;

如果开启debug后,返回一个config:ok就说明成功了。

THE END