微信开发之——JSSDK,通过config接口注入权限验证配置
来源:互联网 发布:linux 进程被杀日志 编辑:程序博客网 时间:2024/05/29 02:32
步骤1:绑定域名
先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。
备注:登录后可在“开发者中心”查看对应的接口权限。
备注:登录后可在“开发者中心”查看对应的接口权限。
步骤2:引入js
在需要调用JS接口的页面引入如下JS文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.0.0.js
请注意,如果你的页面启用了https,务必引入 https://res.wx.qq.com/open/js/jweixin-1.0.0.js ,否则将无法在iOS9.0以上系统中成功使用JSSDK.
请注意,如果你的页面启用了https,务必引入 https://res.wx.qq.com/open/js/jweixin-1.0.0.js ,否则将无法在iOS9.0以上系统中成功使用JSSDK.
最好下载JS到本地。
步骤3:通过config接口注入权限验证配置
先贴前台web页(test.jsp)主要代码如下:
$(function(){var url = window.location.href;//ajax注入权限验证$.ajax({url:"${basePath }JSSDK/ticket.do",dataType: 'json',data: {"url" : url},complete: function(XMLHttpRequest, textStatus){},error: function(XMLHttpRequest, textStatus, errorThrown){alert("发生错误:"+errorThrown);},success: function(res){var appId = res.appId;var noncestr = res.noncestr;var jsapi_ticket = res.jsapi_ticket;var timestamp = res.timestamp;var signature = res.signature;wx.config({ debug: true, //开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId: appId, //必填,公众号的唯一标识 timestamp: timestamp, // 必填,生成签名的时间戳 nonceStr: noncestr, //必填,生成签名的随机串 signature: signature,// 必填,签名,见附录1 jsApiList: ['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ', 'onMenuShareWeibo','onMenuShareQZone','chooseImage', 'uploadImage','downloadImage','startRecord','stopRecord', 'onVoiceRecordEnd','playVoice','pauseVoice','stopVoice', 'translateVoice','openLocation','getLocation','hideOptionMenu', 'showOptionMenu','closeWindow','hideMenuItems','showMenuItems', 'showAllNonBaseMenuItem','hideAllNonBaseMenuItem'] //必填,需要使用的JS接口列表,所有JS接口列表 见附录2});}});});
${appId} 是公众号配置里获得。
${jsapi_ticket}进入后台页面访问接口获得。
url 当前web页的地址。
jsApiList 需要使用的JS接口列表。
后台代码入下(主要获取jsapi_ticket以便生成签名signature,传递给前台):
public void getSignature(HttpServletRequest request, HttpServletResponse response, Model model){String weburl = request.getParameter("url");Long timestamp = System.currentTimeMillis()/1000;int noncestr = new Random().nextInt();AccessTokenUtil accessTokenUtil = new AccessTokenUtil();String accessToken = accessTokenUtil.getAccessToken();System.out.println("accessToken:" + accessToken);//获取jsapi_ticketString jsapi_ticket = null;try {String url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + accessToken + "&type=jsapi";String responseText = HttpUtil.get(url);jsapi_ticket = null;JSONObject object = JSONObject.fromObject(responseText);if (object.containsKey("ticket")) {jsapi_ticket = object.getString("ticket");}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}//生成signatureList<String> nameList = new ArrayList<String>();nameList.add("noncestr");nameList.add("timestamp");nameList.add("url");nameList.add("jsapi_ticket");Map<String, Object> valueMap = new HashMap<String, Object>();valueMap.put("noncestr", noncestr);valueMap.put("timestamp", timestamp);valueMap.put("url", weburl);valueMap.put("jsapi_ticket", jsapi_ticket);Collections.sort(nameList);String origin = "";for (int i = 0; i < nameList.size(); i++) {origin += nameList.get(i) + "=" + valueMap.get(nameList.get(i)).toString() + "&";}origin = origin.substring(0, origin.length() - 1);String signature = sha1(origin);Map<String, Object> map = new HashMap<String, Object>();map.put("jsapi_ticket", jsapi_ticket);map.put("appId", WXAccount.appid);map.put("signature", signature.toLowerCase());map.put("timestamp", timestamp.toString());map.put("noncestr", String.valueOf(noncestr));response.setContentType("application/json; charset=utf-8");PrintWriter writer = null;try {writer = response.getWriter();JSONObject responseObject = JSONObject.fromObject(map);writer.print(responseObject);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{writer.flush();writer.close();}}
注意:变量timestamp、noncestr 必须作为String型传递给后台,否则 IOS将一直报错 config:fail
部分摘自微信开发者文档......
0 1
- 微信开发之——JSSDK,通过config接口注入权限验证配置
- java+jsp微信开发入门教程 jssdk,通过config接口注入权限验证配置,微信开发教程
- 微信的jssdk的config接口注入权限验证配置--signature的生成
- 微信JS-SDK中config接口注入权限验证配置
- Java微信公众平台开发(十三)——微信JSSDK中Config配置
- 微信开发(2):微信js sdk分享朋友圈,朋友,获取config接口注入权限验证(java)
- 微信开发之——JSSDK,基础接口——分享接口
- 公众号JSSDK配置文件config详解,微信jssdk配置
- 微信开发之JSSDK接口开发(Java)
- 微信JS-SDK调试:config注入权限验证配置报错- invalid signature
- ASP.NET WEBAPI实现微信JS-SDK接口注入权限验证配置
- 微信jssdk接口
- 微信学习笔记之二(微信jssdk获取配置权限流程)
- 微信开发之——接口权限
- 微信公众号开发之JSSDK:记config:invalid signature 的错误排查
- 微信JSSDK开发信息配置
- JAVA 微信JSSDK Config参数配置方法
- 微信开发之JSSDK调用
- Eclipse EE环境下配置简单Struct2项目
- Sonar6.0基于centos7.2安装与使用(一)
- Git学习(一)
- 欢迎使用CSDN-markdown编辑器
- 【技术共享】怎么把人脸检测的速度做到极致
- 微信开发之——JSSDK,通过config接口注入权限验证配置
- HTML 速查列表
- 生活中的日记,手帐
- Sonar6.0应用之二:Sonar Web界面配置及与Runner、Scanner集成进行命令行代码分析
- LeetCode题解: Number Complement
- 三元运算符
- Ubuntu在命令行下将默认语言改为英语
- [LeetCode]15.3Sum
- JSON-lib框架介绍