配置并学习微信JS-SDK(1)

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

微信JS-SDK demo http://demo.open.weixin.qq.com/jssdk/#menu-device

微信JS-SDK 说明文档:http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html

  1. 配置公众号:微信后台-公众号设置-功能设置-JS接口安全域名
  2. 引入JS文件:

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

  3. 配置js接口接入的配置(根据附录1获取签名):

    wx.config({
              debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。上线需设置false
              appId: ‘wx693f4c6207512348b33‘, // 必填,公众号的唯一标识 微信后台-开发者中心
              timestamp: , // 必填,生成签名的时间戳
              nonceStr: ‘‘, // 必填,生成签名的随机串
              signature: ‘‘,// 必填,签名,见附录1
              jsApiList: [] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
          });

    1. access_token ,需要后台缓存jsapi_ticket,有效期7200秒
    2. 根据access_token获取jsapi_ticket ,需要后台缓存jsapi_ticket,有效期7200秒
    3. 根据sha1(jsapi_ticket+url+timestamp+自定义随机串)求出配置中的signature
    4. $this->load->driver( ‘cache‘ );
      
              //获取access_token,jsapi_ticket缓存
              $access_token = $this->cache->kvdb->get( ‘access_token‘ );
              $jsapi_ticket = $this->cache->kvdb->get( ‘jsapi_ticket‘ );
              log_message(‘error‘, "获取access_token={$access_token},jsapi_ticket={$access_token}缓存");
      
              //如果不存在access_token缓存
              if ( ! $access_token AND ! $jsapi_ticket ) {
                  log_message(‘error‘, ‘如果不存在access_token缓存‘);
      
                  $this->load->library(‘MyFetchurl‘);
      
                  //1.获取access_token
                  $access_token_json = $this->myfetchurl->https_get( "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".APPID."&secret=".APPSECRET );
      
                  //把 json_decode() 后的对象当作数组使用,需要加第二个参数才是数组返回
                  $access_token_decode = json_decode( $access_token_json, true );
      
                  $access_token = isset( $access_token_decode[‘access_token‘] ) ? $access_token_decode[‘access_token‘] : ‘‘;
                  log_message(‘error‘, "获取access_token={$access_token}");
      
                  //设置access_token缓存
                  $result = $this->cache->kvdb->save( ‘access_token‘, $access_token, EXPIRE_TIME );
                  log_message(‘error‘, "设置access_token缓存$result");
      
                  //2.获取jsapi_ticket
                  $jsapi_ticket_json = $this->myfetchurl->https_get( "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={$access_token}&type=jsapi" );
                  $jsapi_ticket_decode = json_decode( $jsapi_ticket_json, true );
                  $jsapi_ticket = isset( $jsapi_ticket_decode[‘ticket‘] ) ? $jsapi_ticket_decode[‘ticket‘] : ‘‘;
                  log_message(‘error‘, "获取jsapi_ticket=$jsapi_ticket");
      
                  //设置jsapi_ticket缓存
                  $result = $this->cache->kvdb->save( ‘jsapi_ticket‘, $jsapi_ticket, EXPIRE_TIME );
                  log_message(‘error‘, "设置jsapi_ticket缓存=$jsapi_ticket");

    5.   总结下上面求取签名问题
      1. sae上的curl不支持https,换成SaeFetchurl去获取
      2. json_decode的结果是对象,折腾很久:传人第二个参数true就可以返回数组形式
      3. SAE版的CI缓存类数据缓存获取用get() 而不是demo里面的get_metadata(),这个是获取包括缓存时间数据
    6. 订阅号的可以调用的js接口以及最后配置文件如下

      wx.config({
                debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
                appId: ‘wx693f4c620712348b‘, // 必填,公众号的唯一标识
                timestamp: ‘<?=$timestamp?>‘, // 必填,生成签名的时间戳
                nonceStr: ‘<?=$noncestr?>‘, // 必填,生成签名的随机串
                signature: ‘<?=$signature?>‘,// 必填,签名,见附录1
                jsApiList: [// 必填,需要使用的JS接口列表,所有JS接口列表见附录2
                  ‘checkJsApi‘,
                  ‘hideMenuItems‘,
                  ‘showMenuItems‘,
                  ‘hideAllNonBaseMenuItem‘,
                  ‘showAllNonBaseMenuItem‘,
                  ‘translateVoice‘,
                  ‘startRecord‘,
                  ‘stopRecord‘,
                  ‘onRecordEnd‘,
                  ‘playVoice‘,
                  ‘pauseVoice‘,
                  ‘stopVoice‘,
                  ‘uploadVoice‘,
                  ‘downloadVoice‘,
                  ‘chooseImage‘,
                  ‘previewImage‘,
                  ‘uploadImage‘,
                  ‘downloadImage‘,
                  ‘getNetworkType‘,
                  ‘openLocation‘,
                  ‘getLocation‘,
                  ‘hideOptionMenu‘,
                  ‘showOptionMenu‘,
                  ‘closeWindow‘,
                  ‘scanQRCode‘
                ]
            });

  4. 测试是否验证成功

    // 微信
    wx.error(function(res){
      console.log(‘验证失败‘);
    });
    
    wx.ready(function(){
      document.querySelector(‘#checkJsApi‘).onclick = function() {
        wx.checkJsApi({
          jsApiList:[
            ‘getNetworkType‘,
            ‘previewImage‘
          ],
          success:function(res){
            alert(JSON.string)
          }
        });
      }
    
      // 6 设备信息接口
      // 6.1 获取当前网络状态
      document.querySelector(‘#getNetworkType‘).onclick = function () {
        wx.getNetworkType({
          success: function (res) {
            alert(res.networkType);
          },
          fail: function (res) {
            alert(JSON.stringify(res));
          }
        });
      };
    });

在微信浏览器测试,调用结果功能成功!

测试demo http://jdhu.sinaapp.com

时间: 2024-11-11 05:27:45

配置并学习微信JS-SDK(1)的相关文章

实战微信JS SDK开发:贺卡制作与播放(1)

前段时间忙于CanTK 2.0的开发,所以博客一直没有更新.CanTK 2.0主要增强了游戏和富媒体的开发,现在编码和测试基本完成了,等文档完成了再正式发布,里面有不少激动人心的功能,等发布时再一一细说吧. 最近同事用CanTK开发了一个基于微信的贺卡制作APP,我虽然没有参与开发,但是提供CanTK和GameBuilder的技术支持,觉得有些东西比较有意思,写几篇博客和大家分享吧.这个贺卡APP完全开源,有需要的朋友可以随意修改和发布. CanTK(Canvas ToolKit)是一个开源的游

微信js sdk上传多张图片

微信js sdk上传多张图片,微信上传多张图片 该案例已tp3.2商城为例 直接上代码: php代码: public function ind(){ $appid="11111111111111111111"; $secret="11111111111111111111"; $token = S('access_token'); if (!$token) { $res = file_get_contents("https://api.weixin.qq.c

微信JS SDK配置授权,实现分享接口

微信开放的JS-SDK面向网页开发者提供了基于微信内的网页开发工具包,最直接的好处就是我们可以使用微信分享.扫一扫.卡券.支付等微信特有的能力.7月份的时候,因为这个分享的证书获取问题深深的栽了一坑,后面看到"config:ok"的时候真的算是石头落地,瞬间感觉世界很美好.. 这篇文章是微信开发的很多前置条件,包括了服务端基于JAVA的获取和缓存全局的access_token,获取和缓存全局的jsapi_ticket,以及前端配置授权组件封装,调用分享组件封装. 配置授权思路:首先根据

微信JS SDK开发 共享问题小结

首先,我要吐槽一下这个SDK,看了第一遍,完全不知所云,一会获取这个,一会获取那个,也没确切的告诉怎么获取. 和腾讯客服(拿钱不干事的好工作)讨教,人家不懂技术,不知道怎么解决,也没有相关技术人员对应这一块.总共费时 将近一周的时间才把这块弄懂.期间遇到的部分问题以及如何解决分享给大家,欢迎大家一起讨论并指正. 问题1:JS接口安全域名,你所有想要使用的微信接口,要在这个域名内部进行,不能在本地进行相关调试. 问题2:公众账号要求:必须是已经认证的. 问题3:配置config(PS:开启debu

微信js sdk分享开发摘记java版

绑定域名和引入js的就不说了 废话不说直接上代码 1 public void share(HttpServletRequest request) throws Exception { 2 3 StringBuffer homeUrl = request.getRequestURL(); 4 String queryString =request.getQueryString(); 5 if(StringUtils.isNotBlank(queryString)){ 6 homeUrl.appen

微信JS SDK使用权限签名算法

jsapi_ticket 生成签名之前必须先了解一下jsapi_ticket,jsapi_ticket是公众号用于调用微信JS接口的临时票据.正常情况下,jsapi_ticket的有效期为7200秒,通过access_token来获取.由于获取jsapi_ticket的api调用次数非常有限,频繁刷新jsapi_ticket会导致api调用受限,影响自身业务,开发者必须在自己的服务全局缓存jsapi_ticket . 参考以下文档获取access_token(有效期7200秒,开发者必须在自己的

微信JS SDK Demo

微信JS-SDK 分享到朋友圈 分享给朋友 分享到QQ 拍照或从手机相册中选图 识别音频并返回识别结果 使用微信内置地图查看位置原文:http://www.cnblogs.com/txw1958/p/weixin-js-sdk-demo.html 一.JS部分 wx.ready(function () { // 1 判断当前版本是否支持指定 JS 接口,支持批量判断 document.querySelector('#checkJsApi').onclick = function () { wx.

微信JS SDK PHP Demo

一.JSSDK类定义 <?php class JSSDK { private $appId; private $appSecret; public function __construct($appId, $appSecret) { $this->appId = $appId; $this->appSecret = $appSecret; } public function getSignPackage() { $jsapiTicket = $this->getJsApiTicke

配置并学习微信JS-SDK(2)&mdash;图片接口

检查图像接口 选择本地或拍照的图片 上传选择的图片 预览上传的图片 //1.检查图像接口 document.querySelector('#chooseImage').onclick = function() { log_msg('检查api'); unvaild_api = []; wx.checkJsApi({ jsApiList:[ 'chooseImage', 'previewImage', 'uploadImage', 'downloadImage', ], success:funct