微信JS-SDK怎样使用
2024-10-20 04:06:09
前两天要用到微信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
最新文章
- 你真的会玩SQL吗?透视转换的艺术
- JavaScript高级程序设计-(2)基础概念
- [Django]登陆界面以及用户登入登出权限
- 《构建之法》8&;16
- Codility Tree Height
- python--爬虫入门(八)体验HTMLParser解析网页,网页抓取解析整合练习
- Scala Tail Recursion (尾递归)
- IOS-归档的使用
- rails 配置使用mysql
- jquery ready()的几种实现方法小结
- TortoiseSVN设置比较工具为BeyondCompare
- 遍历GridView
- RabbitMQ Cluster群集安装配置
- Android序列化
- docker的基本知识
- United States Department of Agriculture 美国农业部网站数据自动下载小脚本
- 关于Redis处理高并发
- 初学Python——Socket网络编程
- Linux的rp_filter与策略路由
- Yarn 踩坑 : ERROR: Cannot find configuration directory ";/xxxx/xxxx/xxxxx/hadoop-x.x.x/conf";
热门文章
- JavaScript设计模式 (1) 原型模式
- windows2008 rs+sql 2008 下配置站点权限
- Jmeter的面板介绍
- Vue指令4:v-on
- 15Microsoft SQL Server 数据库维护
- iptables详解(1):iptables概念
- Oracle的shutdown命令
- oop设计模式抽象总结
- 解决windows安装TensorFlow2.0beta版本时ERROR: Cannot uninstall &#39;wrapt&#39;问题
- PAT 1121 Damn Single