前两天要用到微信JS库的的一句话——wx.closeWindow();可是整个调用过程有点儿泪奔了。。

。。

尽管开发人员平台上说的清清楚楚,可是使用起来就是not ok!

一,绑定域名

登录到微信公众平台:

在公众号设置里面:

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

二,引入JS

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

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

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

 //         wx.config({
// debug: false, // 开启调试模式,调用的全部api的返回值会在clientalert出来,若要查看传入的參数,能够在pc端打开。參数信息会通过log打出,仅在pc端时才会打印。
// appId: '<%=appId%>', // 必填,公众号的唯一标识
// timestamp: <%=timestamp%>, // 必填。生成签名的时间戳
// nonceStr: '<%=nonceStr%>', // 必填,生成签名的随机串
// signature: '<%=Signature%>',// 必填。签名。见附录1
// jsApiList: ['closeWindow'] // 必填,须要使用的JS接口列表,全部JS接口列表见附录2
// });

wx对象提供了非常多方法调用,而这些方法的返回值能够在config里面设置。方便调试的时候观察报错信息。

appid。timestamp,noncestr,jsApiList都是比較好填写的參数。唯一比較麻烦的是签名。

签名步骤比較小复杂:http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html

 /// <summary>
/// 生成签名
/// </summary>
/// <param name="jsapi_ticket">The jsapi_ticket.</param>
/// <param name="noncestr">The noncestr.</param>
/// <param name="timestamp">The timestamp.</param>
/// <param name="url">The URL.</param>
/// <returns>System.String.</returns>
/// <remarks>Editor:v-liuhch CreateTime:2015/6/1 18:20:43</remarks>
private string GetSignature()
{ WxAccount wa = WxAccountAdapter.Instance.LoadByCode(PubAccCode);//获取当前公众号
WebClientBase wcb = new WebClientBase(); //获取Access_token信息
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);
access_tokenEntity at = WxAPITools.JSONUtil<access_tokenEntity>.FromJsonToObject<access_tokenEntity>(strAccess_token); string strJson = wcb.RequestMyWebClient(EnumSubmitMethod.Get, "", "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + at.access_token + "&type=jsapi"); jsapi_ticket jt = WxAPITools.JSONUtil<jsapi_ticket>.FromJsonToObject<jsapi_ticket>(strJson);//转化为对象
string url = HttpContext.Current.Request.Url.ToString();
url = url.IndexOf("#") >= 0 ? url.Substring(0, url.IndexOf("#")) : url;
string tmpStr = "jsapi_ticket=" + jt.ticket + "&noncestr=" + nonceStr + "×tamp=" + timestamp + "&url=" + url;
return FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1"); } /// <summary>
/// jsapi_ticket是公众号用于调用微信JS接口的暂时票据
/// </summary>
/// <remarks>Editor:v-liuhch CreateTime:2015/6/1 18:25:27</remarks>
public class jsapi_ticket
{ public string errcode { get; set; }
public string errmsg { get; set; }
public string ticket { get; set; }
public string expires_in { get; set; } } /// <summary>
/// Class access_tokenEntity
/// </summary>
/// <remarks>Editor:v-liuhch CreateTime:2015/6/1 21:08:07</remarks>
public class access_tokenEntity
{
public string access_token { get; set; }
public string expires_in { get; set; } }

须要注意的是URL地址究竟取的是哪一部分。获取数据的方式都是get。对全部待签名參数依照字段名的ASCII 码从小到大排序。

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

PS:确认接口签名的时候。能够使用微信提供的这个网页调试工具:http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign

最新文章

  1. 你真的会玩SQL吗?透视转换的艺术
  2. JavaScript高级程序设计-(2)基础概念
  3. [Django]登陆界面以及用户登入登出权限
  4. 《构建之法》8&amp;16
  5. Codility Tree Height
  6. python--爬虫入门(八)体验HTMLParser解析网页,网页抓取解析整合练习
  7. Scala Tail Recursion (尾递归)
  8. IOS-归档的使用
  9. rails 配置使用mysql
  10. jquery ready()的几种实现方法小结
  11. TortoiseSVN设置比较工具为BeyondCompare
  12. 遍历GridView
  13. RabbitMQ Cluster群集安装配置
  14. Android序列化
  15. docker的基本知识
  16. United States Department of Agriculture 美国农业部网站数据自动下载小脚本
  17. 关于Redis处理高并发
  18. 初学Python——Socket网络编程
  19. Linux的rp_filter与策略路由
  20. Yarn 踩坑 : ERROR: Cannot find configuration directory &quot;/xxxx/xxxx/xxxxx/hadoop-x.x.x/conf&quot;

热门文章

  1. JavaScript设计模式 (1) 原型模式
  2. windows2008 rs+sql 2008 下配置站点权限
  3. Jmeter的面板介绍
  4. Vue指令4:v-on
  5. 15Microsoft SQL Server 数据库维护
  6. iptables详解(1):iptables概念
  7. Oracle的shutdown命令
  8. oop设计模式抽象总结
  9. 解决windows安装TensorFlow2.0beta版本时ERROR: Cannot uninstall &#39;wrapt&#39;问题
  10. PAT 1121 Damn Single