精华内容
下载资源
问答
  • weixin-js-sdk使用

    千次阅读 2021-01-19 16:24:12
    npm install weixin-js-sdk --save 页面引入 import wx from "weixin-js-sdk"; 微信初始化 wx.config({ debug: false, // 开启调试模式, appId: data.appId, //必填,企业号的唯一标识,此处企业号corpid ...

    注意:以下内容自身的项目为uniapp编译生成微信小程序。小程序内嵌webview。

    一、微信初始化

    1. 安装微信sdk
    npm install weixin-js-sdk --save
    
    1. 页面引入
    import wx from "weixin-js-sdk";
    
    1. 微信初始化
    wx.config({
        debug: false, // 开启调试模式,
        appId: data.appId, //必填,企业号的唯一标识,此处企业号corpid
        timestamp: data.timestamp, //必填,生成签名的时间戳
        nonceStr: data.nonceStr, //必填,生成签名的随机串
        signature: data.signature, //必填,签名,见附录1
        jsApiList: ["chooseImage"], //必填,需要使用的JS接口列表JS接口列表见附录2
        });
    
    • 该操作中的参数为后台获取的数据
    • wx.config执行微信配置初始化,debugtrue时为调试模式,微信初始化错误还是正确都是弹框提示。类似于{“errMsg”:“config:ok”}
    • jsApiList为要使用微信哪些内置方法,但navigate跳转路由除外,不需要微信初始化也可以直接调用。详见微信官方文档附录二

    以下附上vue中详细代码

    <!--
     * @Author: your name
     * @Date: 2021-01-06 10:18:31
     * @LastEditTime: 2021-01-18 19:23:18
     * @LastEditors: Please set LastEditors
     * @Description: In User Settings Edit
     * @FilePath: /my-demo/src/views/Home.vue
    -->
    <template>
      <div class="home">
        <img alt="Vue logo" src="../assets/logo.png" />
        <h1 @click="selectImg">这是点击微信按钮</h1>
        <HelloWorld msg="Welcome to Your Vue.js App" />
      </div>
    </template>
    
    <script>
    // @ is an alias to /src
    
    import axios from "axios";
    import wx from "weixin-js-sdk";
    export default {
      name: "Home",
      components: {
        'HelloWorld':()=> import("@/components/HelloWorld.vue")
      },
      methods: {
        // 初始化
        getConfig() {
          axios({
            method: "post",
            url: "xxxxx",//请求后端接口的地址
            data: {
              url: location.href.split("#")[0],
            }, //向服务端提供授权url参数,并且不需要#后面的部分
            //注意:这个url必须是小程序进入webview的地址,并且是合法域名形式地址!这样获取的数据才能保证签名没问题
          }).then((res) => {
            let data = res.data.results;
            wx.config({
              debug: false, // 开启调试模式,
              appId: data.appId, // 必填,企业号的唯一标识,此处填写企业号corpid
              timestamp: data.timestamp, // 必填,生成签名的时间戳
              nonceStr: data.nonceStr, // 必填,生成签名的随机串
              signature: data.signature, // 必填,签名,见附录1
              jsApiList: ["chooseImage"], // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
            });
    
            wx.ready(function () {
              alert("ready");
              // 在这里调用 API
              //判断当前客户端版本是否支持指定JS接口
              wx.checkJsApi({
                jsApiList: [
                  // 所有要调用的 API 都要加到这个列表中
                  "chooseImage"
                ], // 需要检测的JS接口列表,所有JS接口列表见附录2,
                success: function (res) {
                  console.log('checkJsApi成功=====', res);
                  alert('支持chooseImage');
                  // 以键值对的形式返回,可用的api值true,不可用为false
                  // 如:{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"}
                },
                fail:function(e){
                  alert('不支持');
                }
              });
            });
            wx.error(function (res) {
                // wx.config注册失败就会执行
              alert("error");
            });
          });
        },
        //选择图片
        selectImg() {
          wx.chooseImage({
            success: function (res) {
              console.log("success=====", res);
              alert("成功");
            },
            fail: function (e) {
              console.log("=====", e);
              alert("失败");
            },
            complete: function () {
              alert("立即完成");
            },
          });
        },
      },
      mounted() {
        this.getConfig();
      },
    };
    </script>
    
    
    展开全文
  • 1、 引入cos-js-sdk-v5 npm i cos-js-sdk-v5 --save 直接上代码 accept=".rar, .zip, .doc, .docx, .pdf, .png, .jpg, .jpeg" :on-preview="handlePreview" :file-list="fileList" :on-change="onChange" :on-...

    1、 引入cos-js-sdk-v5

    npm i cos-js-sdk-v5 --save

    直接上代码

    <template>

    <div>

    <el-upload v-if="!disabled" class="upload-demo isDel" ref="upload" :action="'#'"
          accept=".rar, .zip, .doc, .docx, .pdf, .png, .jpg, .jpeg" :on-preview="handlePreview" :file-list="fileList" :on-change="onChange"
           :on-success="handleSuccess" :disabled="disabled" :show-file-list="false" :http-request="uploadToCos">
          <el-button v-if="!disabled" slot="trigger" type="primary">选取文件</el-button>
          <div v-if="!disabled" slot="tip" class="el-upload__tip">
            支持扩展名:.rar .zip .doc .docx .pdf .png .jpg .jpeg
          </div>
        </el-upload>

    <el-row class="jindutiao" v-if="isJindu">
          <el-col>
            <el-progress :percentage="videoPercent">
            </el-progress>
          </el-col>
          <el-col>
            <i class="el-icon-error" @click="zhongzhi( fileList[0])"  v-if="isZuzhi"></i>
          </el-col>
        </el-row>

    </div>
    </template>

    <script>
      import COS from 'cos-js-sdk-v5';
      const config = {
        SecretId: '',//cos储存桶的SecretId
        SecretKey: '',//cos储存桶的SecretKey
        Bucket: '',//存储桶
        Region: 'ap-shanghai',//存储桶所在地域
      };

      const cos = new COS({
        SecretId: config.SecretId,
        SecretKey: config.SecretKey,
      });

        export default {
        name: "ApplyIndexModule",
        data() {

         return {

            fileList:[],

            file:"",

            isJindu:false,

            videoPercent:0,

            taskId:'',

            

         }

         methods: {

    onChange(file, fileList) {
            this.file = file;
            this.fileList = fileList;

    },

         uploadToCos(file) {
            console.log(file)

            const fileInfo = file.file;

            const isLtM = fileInfo.size / 1024 / 1024 < 1024;

            if (!isLtM) {
              return that.$message.error("上传文件大小不能超过 1GB!");
            }
            if (that.fileList.length != 1) {
             
              // that.fileList.slice(0, 1);
              return that.$message.error("只能上传一个文件,请删除原文件");
            }

            }

            cos.putObject({
              Bucket: config.Bucket,
              Region: config.Region,
              Key: `upload/`+file.file.name, // 存储的路径
              Body: fileInfo, // 上传对象
              onProgress: progressData => {//上传进度
                // console.log(progressData)
                const percent = parseInt(progressData.percent * 10000) / 100;
                const speed = parseInt((progressData.speed / 1024 / 1024) * 100) / 100;
                var total = progressData.total  //文件总大小
                var loaded = progressData.loaded //文件已上传大小
                // console.log('进度:' + percent + '%; 速度:' + speed + 'Mb/s;');
                // if (!that.isJindu) {
                  that.isJindu = true;
                  that.isZuzhi = true;
                  // console.log('total'+total)
                // }
                that.videoPercent = parseInt((loaded / total * 100).toFixed(0))//实时监测上传进度
                // if(that.videoPercent == 100){
                //   that.isJindu = false;
                // }
                console.log(that.videoPercent)
              },
              onTaskReady:taskId =>{
                console.log(taskId)
                that.taskId = taskId;
              },
            }, (err, data) => {
              console.log(data);
              console.log(err)
              if (data && data.statusCode == 200) {
                // setTimeout(function()  {
                    that.isZuzhi = false
                // },1000)
                
                that.isshanchu = true;
                console.log(data);
                console.log('上传完成!');
              } else {
                console.log(err);
                console.log('上传失败!错误信息:' + err.message);
              }
            });

         },

          zhongzhi( file){
            console.log(this.taskId)
            cos.cancelTask(this.taskId);//终止上传cos
            this.isJindu = false;
          },

    }

    </script>

    展开全文
  • vue使用 weixin-js-sdk

    2021-08-06 17:53:01
    1.npm i weixin-js-sdk 2.importwxfrom"weixin-js-sdk"; 3.mounted(){ constu=navigator.userAgent, app=navigator.appVersion; this.isIos=!!u.match(/\(i[^;]+;(U;)?CPU.+MacOSX/); this.getWxConfig(); ...

    1.npm i weixin-js-sdk

    2.import wx from "weixin-js-sdk";

      3.mounted() {

        const u = navigator.userAgent,

          app = navigator.appVersion;

        this.isIos = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);

        this.getWxConfig();

      },

     4. methods: {

    doShare() {

          //需在用户可能点击分享按钮前就先调用

          wx.updateAppMessageShareData({

            title: "合肥师范学院附属实验小学", // 分享标题

            desc: "录取结果查询", // 分享描述

            link: this.$domain + "/commonToolsMobile/notice/query", // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致

            imgUrl:

              "https://www.0551cx.com/publicFileUpload/publicFiles/commonTools/notice/log.png", // 分享图标

            success: function() {

              // 设置成功

            },

          });

          wx.updateTimelineShareData({

            title: "合肥师范学院附属实验小学", // 分享标题

            desc: "录取结果查询", // 分享描述

            link: "", // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致

            imgUrl:

              "https://www.0551cx.com/publicFileUpload/publicFiles/commonTools/notice/log.png", // 分享图标

            success: function() {},

          });

        },

        async getWxConfig() {

          let _this = this;

          //签名的URL

          let sign_url = "";

          if (window.__wxjs_is_wkwebview === true) {

            //如果当前设备是IOS

            sign_url = window.location.href.split("#")[0];

          } else {

            //非IOS设备

            sign_url = window.location.href;

          }

          let res = await getSign({

            url: encodeURI(sign_url),

          });

          if (res.code === 200) {

            wx.config({

              debug: false, // 开启调试模式,

              appId: res.details.data.appId, // 必填,企业号的唯一标识,此处填写企业号corpid

              timestamp: res.details.data.timeStamp, // 必填,生成签名的时间戳

              nonceStr: res.details.data.nonceStr, // 必填,生成签名的随机串

              signature: res.details.data.signature, // 必填,签名,见附录1

              jsApiList: ["updateAppMessageShareData", "updateTimelineShareData"], // 必填,需要使用的JS接口列表,所有JS接口列表见附录2

            });

            wx.ready(function() {

              _this.doShare();

              if (_this.isIos) {

                document.querySelector("#audio").play();

                _this.ispause = false;

                _this.audio = true;

              }

            });

          }

        },

    }

    展开全文
  • 关于JS-SDK 微信JS-SDK是微信公众平台 面向网页开发者提供的基于微信内的网页开发工具包。 通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照、选图、语音、位置等手机系统的能力,同时可以直接使用微信...

    关于JS-SDK

    微信JS-SDK是微信公众平台 面向网页开发者提供的基于微信内的网页开发工具包。

    通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照、选图、语音、位置等手机系统的能力,同时可以直接使用微信分享、扫一扫、卡券、支付等微信特有的能力,为微信用户提供更优质的网页体验。

    关于小程序使用JS-SDK

    小程序的web-view相关的API调用参考地址:​​​​​​web-view | 微信开放文档

    JS-SDK主要是给微信公众号使用的,在小程序的web-view中嵌套的html5页面可以通过调用JS-SDK,从而实现了调用微信端几个指定的相关API功能,比如拍照、上传图片、扫一扫等。以下介绍如何调用扫一扫功能。

    一、引用并加载微信JS-SDK库

    调用所有微信API接口前,必须先引用JS-SDK库。

    以下有两种方法引用JS-SDK库,推荐方法2.

    方法1.通过script引用JS文件,此方法也是微信官方文档的示例方法

    在需要调用JS接口的页面引入如下JS文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.6.0.js

    如需进一步提升服务稳定性,当上述资源不可访问时,可改访问:http://res2.wx.qq.com/open/js/jweixin-1.6.0.js (支持https)。

    方法2.通过webpack引入

    安装

    npm install weixin-js-sdk -S

    使用:在main.js文件中,使用import引用并命名为wx,再将wx设置到vue.prototype属性中。这样全局都可以通过this.$wx.***的方式使用js-sdk的API了。

    import wx from "weixin-js-sdk";
    Vue.prototype.$wx = wx

    二、demo页面调用扫一扫函数前的初始化工作

    以下为demo页面,在mounted中调用后端JAVA接口获取初始化微信config接口需要的appId和ticket(JAVA代码参见后文)。

    在methods中定义的初始化方法wechatApiInit,主要是实现通过config接口注入权限验证配置。并按微信官方文档的要求,注入config前做了签名算法。scan方法就是页面点击“扫一扫”按钮的触发事件。

    mounted:

      mounted: function () {
    
        //申请微信jsadk接口 扫一扫
        var jsApiList = ["scanQRCode"];
        //访问后端JAVA接口:获取appId
        getAppKey({
          params: ""
        }).then((res)=>{
          this.appId=res.entity.appId;
        })
    
        //访问后端JAVA接口:获取微信JS-SDK的ticket
        loadTicket({
          params: "",
        }).then((res) => {
          console.log("RES>>", res);
          if (res.entity.ticket) {
            //将ticket传入 进行JS-SDK调用的初始化
            this.wechatApiInit({ ticket: res.entity.ticket, jsApiList });
          } else {
            console.log("loadTicket获取失败");
          }
        });
      },

     methods:

        //微信api 初始化 
        wechatApiInit(jsonResult) {
          console.log("jsonResult>>>", jsonResult);
    
          //字符合并
          var raw = function (args) {
            var keys = Object.keys(args);
            keys = keys.sort();
            var newArgs = {};
            keys.forEach(function (key) {
              newArgs[key.toLowerCase()] = args[key];
            });
    
            var string = "";
            for (var k in newArgs) {
              string += "&" + k + "=" + newArgs[k];
            }
            string = string.substr(1);
            return string;
          };
          var vurl= location.href;
          //console.log("location.href:"+vurl);
          vurl=location.href.split('#')[0];
          //console.log("vurl:"+vurl);
          //数据包
          var ret = {
            jsapi_ticket: jsonResult.ticket,
            nonceStr: Math.random().toString(36).substr(2, 15),
            timestamp: parseInt(new Date().getTime() / 1000) + "",
            url: vurl
          };
          //console.log("RET:", ret);
          let string1= raw(ret);
          //console.log("string1:"+string1);
          let ticket=hex_sha1(string1);
          //console.log("ticket",ticket);
          //console.log("jsonResult.jsApiList",jsonResult.jsApiList);
          //console.log("appId:",this.appId);
          //通过config接口注入权限验证配置
          this.$wx.config({
            debug: false,//调试时设置为true
            appId: this.appId,
            timestamp: ret.timestamp,
            nonceStr: ret.nonceStr,
            signature: ticket,
            jsApiList: jsonResult.jsApiList
          });
        },
    
        //扫一扫 按钮触发事件
        scan() {
          var that=this;
          this.$wx.miniProgram.getEnv(function (res) {
            console.log(res.miniprogram); // true
            if (res.miniprogram) {
              console.log("小程序scan.");
              that.$wx.scanQRCode({
                needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
                scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是一维码,默认二者都有
                success: function (res) {
                  var result = res.resultStr; // 当needResult 为 1 时,扫码返回的结果
                  //alert(result);
                  that.getDeviceCode(result);//将扫码结果传到自定义的方法去执行
                },
              });
            } else {
              console.log("app scan.");
            }
          });
        }

     调试时,请将config中的debug设置为true,如果有异常,可以看到调试异常的信息。注意scan方法中this和that的使用。

    三、JAVA后端接口代码

    说明:JAVA后端接口主要实现了获取appId,获取ticket值(自动验证超时)。

    部分方法为自定义的公用方法类(比如读取xml配置项,发送http请求等),这里就不一一给出了,可以用自己的方法替代实现。这里主要是给出实现的主要步骤。

    	// 微信JS接口的临时票据
    	public ResultMsg loadTicket(@RequestBody HashMap<String, Object> map) {
    		String estr = "微信JS接口的临时票据(loadTicket):";
    		ResultMsg rMsg = new ResultMsg();
    		logger.debug(estr + "loadTicket ok.");
    		try {
    			String vUrl = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token="
    					+ isExistAccess_Token() + "&type=jsapi";
    			logger.debug("vurl:" + vUrl);
    			String msg = Comm.httpGet(vUrl);
    			logger.debug(msg);
    			rMsg.setEntity(Comm.toHashMap(msg));
    			rMsg.setSuccess();
    			return rMsg;
    		} catch (Exception e) {
    			logger.error(estr + e.toString());
    			return null;
    		}
    	}
    
        // 微信appID
    	public ResultMsg getAppKey(@RequestBody HashMap<String, Object> map) {
    		String estr = "微信appID和appSecret:";
    		ResultMsg resultMsg = new ResultMsg();
    		try {
    			HashMap<String, Object> rmap = new HashMap<String, Object>();
    			rmap.put("appId", getAppId());
    			//rmap.put("appsecret", getAppSecret());
    			resultMsg.setEntity(JSONObject.fromObject(rmap));
    			resultMsg.setSuccess();
    			logger.info(resultMsg.toString());
    			return resultMsg;
    		} catch (Exception e) {
    			logger.error(estr + e.toString());
    			return resultMsg;
    		}
    	}
    
    	// 获取access_token值
    	public String isExistAccess_Token() {
    		try {
    			String path = this.getClass().getClassLoader().getResource("config/token.xml").getPath();
    			String token = Comm.xmlRead(path, "access_token");// tonken值
    			String YouXRQ = Comm.xmlRead(path, "expires_in");// 有效日期
    			SimpleDateFormat sf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
    			Date dt = sf.parse(YouXRQ);
    			Date dtnow = new Date();
    			logger.debug(" 当前时间>>" + dtnow.getTime() + "|| 记录时间>>" + dt.getTime());
    			if (dtnow.getTime() > dt.getTime()) {
    				String msg = getAccessToKen();
    				HashMap<String, Object> map = Comm.toHashMap(msg);
    				token = map.get("access_token").toString(); // logger.info(path);
    				Comm.xmlWrite(path, "access_token", token);// 保存最新token
    				String expires_in = map.get("expires_in").toString();// 失效时长(秒)
    				Integer expires = Integer.valueOf(expires_in);
    				Calendar cal = Calendar.getInstance();
    				cal.setTime(dtnow);
    				cal.add(Calendar.SECOND, expires);// 保存过期时间
    				Comm.xmlWrite(path, "expires_in", sf.format(cal.getTime()));
    				logger.info("新token时效." + sf.format(cal.getTime()));
    				return token;
    			} else {
    				logger.info("获取原token值:" + token);
    				return token;
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    			return "";
    		}
    	}
    
    	// 刷新微信token(仅供内部获取token值调用)
    	private String getAccessToKen() {
    		String tokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential" + "&appid="
    				+ getAppId() + "&secret=" + getAppSecret();
    		String msg = "";
    		try {
    			msg = Comm.httpGet(tokenUrl);
    			logger.info("刷新微信token:" + msg);
    			return msg;
    		} catch (Exception e) {
    			logger.error(e.toString());
    			return msg;
    		}
    	}

    四、需要避免踩到的坑

    开发小程序调用JS-SDK时,使用的appId、AppSecret都必须是微信公众号而不是小程序的,同样也必须在微信公众号的业务域名中添加小程序的url调用地址,切记!!

    还有,需要在公众号绑定小程序。

    否则会出现“40048,invalid url domain”不合法的url域名。业务域名设置时不能带http://的协议头,设置示例为: aaa.com

    展开全文
  • vue 引入 weixin-js-sdk

    2021-08-11 20:48:12
    npm install weixin-js-sdk import 'wx' from 'weixin-js-sdk' 基本就是这样,但是在引入之后调用wx是undefined 查看了npm引用包后,将 import 改为 require,但是仍然是undefined。查找了关键词“VUE使wx 包...
  • 先贴官网链接 腾讯云cos-js-sdk-v5 首先 npm i cos-js-sdk-v5 --save 创建一个upload.js /* 1.获取临时秘钥data 2.初始化 3.判断上传文件的类型 4.判断文件大小 是否需要分片上传*/ import COS from 'cos-js-sdk-...
  • 微信JS-SDK接口

    2021-02-26 16:37:07
    微信JS-SDK说明文档
  • 企业微信JS-SDK的调用

    2021-03-24 17:37:24
    企业微信JS-SDK的调用前篇前端框架功能点描述功能实现步骤具体实现在开发中遇到的error总结 前篇 公司最近要写一个企业微信上的应用项目,调用TAPD平台的数据,对公司人员、项目进行分析管理 前端框架 框架用的VUE,...
  • NPM install weixin-js-sdk 在main.js全局使用 import wx from "weixin-js-sdk"; Vue.protoType.$wx = wx; 或者单个页面引入 var wx = require("weixin-js-sdk") 需要配置wx.config()或许需要在每次路由跳转时...
  • 调用企业微信JS-SDK

    2021-06-28 10:59:46
    c# 这里以c# MVC为例,引用JS-SDK,注入应用的权限,并作一个打开微信对话窗口Demo 文章目录1、效果图2、开发流程2.1、设置应用可信域名2.2、引入js2.3、注入应用的权限3.4、 调用打开会话接口3、完整代码4、注意...
  • 这篇文章主要为大家详细介绍了php...什么叫js-sdk,我先演示js-sdk接口的具体作用。我在微信随便打开一片推送文章如下图:点开第一篇文章上面就是我们的连接文章,如果我们把这篇文章发送给朋友,显示效果如下图:分...
  • 说明:参数 oType: 是为了区分不同 JS接口列表里面的方法,传进去不同的值(自己定义),可以处理不同的方法,例如:当 oType 为 scan 时,调起微信的扫一扫功能;...import wx from 'weixin-js-sdk'
  • npm install weixin-js-sdk -S 第二部、挂载到全局 jssdk后续可能会在项目的多个页面中使用到,这里为了方便使用把它挂载到Vue的原型上 import Vue from "vue" import jssdk from "weixin-js-sdk" //将sdk挂载到...
  • 根据企业微信的文档来看,接口调用的顺序应该是:
  • 先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。 备注:本地开发 微信测试平台账号中配置JS接口安全域名 登录后可在“开发者中心”查看对应的接口权限。 步骤二:引入JS文件 ...
  • 1.引入weixin-js-sdk 依赖 vue全局使用 npm install weixin-js-sdk import wx from "weixin-js-sdk"; Vue.prototype.wx = wx; 2.通过config接口注入权限验证配置 此处的appId、timestamp、nonceStr、signature...
  • npm i -S weixin-js-sdk 在main.js 引入 import wx from 'weixin-js-sdk' window.wx = wx; 使用方法,正常根据小程序的方法就可以了,主要是解决了wx 对象找不到 wx.miniProgram.navigateTo({ url: `/...
  • wx.config({debug:false,appId:'${appId!}',timestamp: ${timestamp!},nonceStr:'${nonceStr!}',signature:'${signature!}',jsApiList: ['checkJsApi','onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQ...
  • 使用 npm 安装npm install weixin-js-sdk使用方法main.js 中import wx from 'weixin-js-sdk'Vue.prototype.$share = (title = '', imgUrl = 'https://img.vhiphop.top/web/logo-icon.jpg') => {title = `${title ...
  • 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、pandas是什么?...所有的JS接口只能在企业微信应用的可信域名下调用(包括子域名),且可信域名必须有ICP备案且在管理端验
  • npm install weixin-js-sdk --save-dev import wx from 'weixin-js-sdk' <script type="text/javascript" src="<?php echo PUBLIC_C_URL;?>js/jquery-weui.min.js"></script> //这里的的参数...
  • 微信授权+JS-SDK

    2021-10-23 09:58:37
    SDK接口调用功能注意流程生成JS-SDK权限验证的签名功能实现属性配置授权获取 code (拉起授权页面)获取access_token通过openID + access_token获取用户信息access_token过期刷新JS-SDK生成signature错误
  • '/'会导致你传的url中的参数不完整,sdk接收到的url和你实际的url不匹配,当然就会invalid domain了。 这个和你前端把url提交到接口上的方法有关系,简单的说就是url encode一下就可以避免了。有的库比如jQuery或者...
  • JS-SDK使用权限签名算法(springboot+redis+nacos)
  • uniapp h5页面集成企业微信js-sdk

    千次阅读 2021-07-16 14:42:19
    WXConfig.signature, // 必填,签名,见 附录-JS-SDK使用权限签名算法 jsApiList: ['scanQRCode'] // 必填,需要使用的JS接口列表,凡是要调用的接口都需要传进来 }); this.sdk.ready...
  • 步骤一:绑定域名先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。备注:登录后可在“开发者中心”查看对应的接口权限。步骤二:引入JS文件在需要调用JS接口的页面引入如下JS文件,...
  • 什么叫js-sdk,我先演示js-sdk接口的具体作用。我在微信随便打开一片推送文章如下图:点开第一篇文章上面就是我们的连接文章,如果我们把这篇文章发送给朋友,显示效果如下图:分享到朋友圈我们再来看看效果:为什么...
  • 前不久将与微信公众号有关的一些知识点进行了梳理,微信公众号开发过程中,用最多的就是微信js-sdk了。但是使用微信js-sdk需要获取签名、时间戳、随机字符串,等等一系列的参数,那问题就来了,这些参数是由后端提供...
  • 使用步骤请参考微信开放文档JS-SDK说明文档中的JSSDK使用步骤 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <script src="../../js/jquery-1.7.2.min.js" type=...
  • 微信JS-SDK使用

    2021-05-04 16:23:23
    import wx from 'weixin-js-sdk' import * as WxApi from '@/core/api/WxApi' // 微信签名 export async function wxSignature () { let signature = null let url = encodeURIComponent(location.href.split('#'...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 108,192
精华内容 43,276
关键字:

JS-SDK