H5接入微信公众号方法(超详细)

这篇具有很好参考价值的文章主要介绍了H5接入微信公众号方法(超详细)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

微信官方文档

一、使用真实公众号并认证开发者,或者申请使用测试号

注意:
在微信开发者工具中调试,必须先成为公众号开发者,可以在微信公众号后台进行配置
位置:
公众号后台 > 设置与开发 > 开发者工具 > web开发者工具 > 绑定微信开发者微信号(必须先关注此公众号才能成为开发者)
H5接入微信公众号方法(超详细)
H5接入微信公众号方法(超详细)

二、在公众号后台配置相关信息,有两处需要填写

1. 接口配置信息

此处可不填写,这个地方的内容是发送消息时用的,如果仅是调用普通微信api,无需填写。

2. js安全域名

此处必须配置,只有此域名发出的请求才能获得微信权限

注意:域名不需要加http://或者https://,也不需要添加端口号,可以是ip地址

例:192.168.123.123;abcd.abcd.cn

三、获取微信api接口授权

为保证安全,建议获取access_tokenjsapi_ticket、计算签名都由后端完成

提示:需要预先知道的数据
H5接入微信公众号方法(超详细)

1. 获取access_token

使用get请求,参数有三个,分别是:grant_typeappidsecret

其中grant_type值固定为client_credential,其它两个分别为公众号的appIDappsecret

// 请求示例
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

注意:access_token有效期为7200秒

2. 获取jsapi_ticket

使用get请求,参数有两个,分别是:access_tokentype

access_token是上一个接口返回的,type为固定值jsapi

// 请求示例
https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi

注意:jsapi_ticket有效期为7200秒

3. 签名算法

对指定字段进行sha1签名

字段分别为:jsapi_ticket(通过上面接口获取的)、noncestr(随机字符串)、timestamp(时间戳)、url(当前网页的URL,不包含#及其后面部分)

// 示例
jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg&noncestr=Wm3WZYTPz0wzccnW&timestamp=1414587457&url=http://mp.weixin.qq.com?params=value

附:sha1签名算法

export default {
  methods: {
    // 当前时间戳
    timeStamp(data) {
      return parseInt(new Date(data).getTime()) + "";
    },
    // 字符转义 
    encodeUTF8(s) {
      let i,
        r = [],
        c,
        x;
      for (i = 0; i < s.length; i++)
        if ((c = s.charCodeAt(i)) < 0x80) r.push(c);
        else if (c < 0x800) r.push(0xc0 + ((c >> 6) & 0x1f), 0x80 + (c & 0x3f));
        else {
          if ((x = c ^ 0xd800) >> 10 == 0)
            //对四字节UTF-16转换为Unicode
            (c = (x << 10) + (s.charCodeAt(++i) ^ 0xdc00) + 0x10000), r.push(0xf0 + ((c >> 18) & 0x7), 0x80 + ((c >> 12) & 0x3f));
          else r.push(0xe0 + ((c >> 12) & 0xf));
          r.push(0x80 + ((c >> 6) & 0x3f), 0x80 + (c & 0x3f));
        }
      return r;
    },
    // sha1签名算法
    sha1(s) {
      let data = new Uint8Array(this.encodeUTF8(s));
      let i, j, t;
      let l = (((data.length + 8) >>> 6) << 4) + 16,
        s = new Uint8Array(l << 2);
      s.set(new Uint8Array(data.buffer)), (s = new Uint32Array(s.buffer));
      for (t = new DataView(s.buffer), i = 0; i < l; i++) s[i] = t.getUint32(i << 2);
      s[data.length >> 2] |= 0x80 << (24 - (data.length & 3) * 8);
      s[l - 1] = data.length << 3;
      let w = [],
        f = [
          function () {
            return (m[1] & m[2]) | (~m[1] & m[3]);
          },
          function () {
            return m[1] ^ m[2] ^ m[3];
          },
          function () {
            return (m[1] & m[2]) | (m[1] & m[3]) | (m[2] & m[3]);
          },
          function () {
            return m[1] ^ m[2] ^ m[3];
          },
        ],
        rol = function (n, c) {
          return (n << c) | (n >>> (32 - c));
        },
        k = [1518500249, 1859775393, -1894007588, -899497514],
        m = [1732584193, -271733879, null, null, -1009589776];
      (m[2] = ~m[0]), (m[3] = ~m[1]);
      for (i = 0; i < s.length; i += 16) {
        let o = m.slice(0);
        for (j = 0; j < 80; j++)
          (w[j] = j < 16 ? s[i + j] : rol(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1)),
            (t = (rol(m[0], 5) + f[(j / 20) | 0]() + m[4] + w[j] + k[(j / 20) | 0]) | 0),
            (m[1] = rol(m[1], 30)),
            m.pop(),
            m.unshift(t);
        for (j = 0; j < 5; j++) m[j] = (m[j] + o[j]) | 0;
      }
      t = new DataView(new Uint32Array(m).buffer);
      for (let i = 0; i < 5; i++) m[i] = t.getUint32(i << 2);

      let sign = Array.prototype.map
        .call(new Uint8Array(new Uint32Array(m).buffer), function (e) {
          return (e < 16 ? "0" : "") + e.toString(16);
        })
        .join("");
      return sign;
    },
  },
};

4. 获取微信api权限

wx.config({
  debug: true, // 开启调试模式
  appId: '', // 必填,公众号的唯一标识
  timestamp: , // 必填,生成签名的时间戳
  nonceStr: '', // 必填,生成签名的随机串
  signature: '',// 必填,签名
  jsApiList: [] // 必填,需要使用的JS接口列表
});

5. 通过ready接口处理成功验证
注意:
config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。

wx.ready(function(){
});

微信JS-SDK说明文档

6. 调用已授权的api
这一步很简单,照着微信官方文档调用就可以了

示例:文章来源地址https://www.toymoban.com/news/detail-443270.html

wx.ready(function(){
	wx.getLocation({
	  type: 'wgs84', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
	  success: function (res) {
	    var latitude = res.latitude; // 纬度,浮点数,范围为90 ~ -90
	    var longitude = res.longitude; // 经度,浮点数,范围为180 ~ -180。
	    var speed = res.speed; // 速度,以米/每秒计
	    var accuracy = res.accuracy; // 位置精度
	  }
	});
});

到了这里,关于H5接入微信公众号方法(超详细)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信公众号开发接入

    你要有一个微信公众号,一个内网穿透工具 微信公众号:https://mp.weixin.qq.com/ 官网文档:https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Access_Overview.html 服务器配置:设置与开发--基本配置--服务器配置 token:3-32字符,自己生成配置到服务器配置 公网 IP:云服务器一般都有

    2024年02月06日
    浏览(73)
  • uniapp微信公众号H5分享

    如果项目文件node_modules中没有weixin-js-sdk文件,则直接使用本文章提供的; 如果不生效,则在template.h5.html中引入 script src=\\\"https://res.wx.qq.com/open/js/jweixin-1.6.0.js\\\"/script 首先引入weixin-js-sdk

    2024年02月22日
    浏览(38)
  • uniapp微信公众号h5微信授权登录

    在微信客户端中访问第三方网页,公众号可通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑。 关于公众号网页授权前期准备: 1.微信公众号开发,首先要搞一个公众号,开发阶段可以申请一个公众平台测试账号。 (进入到微信公众公众平台,找到开发者工具

    2024年02月03日
    浏览(31)
  • 微信公众号接入讯飞星火AI大模型

    最近各种AI大模型开始强势进入大家视野,平时工作和娱乐中也都有使用过。刚好最近阿光在逛B站的时候看见一位阿婆主:技术爬爬虾 开源了自己搞的一套微信AI助理,使用了讯飞的星火大模型,实现了借助微信公众号接入AI的功能。 刚好阿光手上还有闲置的微信公众号和老

    2024年01月25日
    浏览(57)
  • 微信公众号H5开发,在微信浏览器打开H5,无法一键下载图片

    微信公众号H5开发,在普通浏览器,可以直接通过以下代码下载图片: 但是在微信浏览器,上面那段代码是无效的,这是微信浏览器的限制。 微信的JS-SDK提供 wx.downloadImage() 的方法,是用来下载图片的。但其实我觉得应该是用来耍猴的。该方法不接受一个 url 参数,而是接受

    2024年02月11日
    浏览(41)
  • 微信公众号接入ChatGpt、文心一言等【完整流程】

    1. 首要条件: 公网服务器一台 公众号(订阅号、服务号都可)一个 注册LinkAI(有国外服务器的可不考虑使用) 开源项目chatgpt-on-wechat 2.服务器选择 建议国外服务器 ,使用openai 无需代理,域名也不需要备案。我当时购买时没注意,选的国内服务器,导致域名备案备案花了很长时间

    2024年02月04日
    浏览(43)
  • 最新AI创作系统ChatGPT程序源码+详细搭建部署教程+微信公众号版+H5源码/支持GPT4.0+GPT联网提问/支持ai绘画+MJ以图生图+思维导图生成!

    使用Nestjs和Vue3框架技术,持续集成AI能力到系统! 新增 MJ 官方图片重新生成指令功能 同步官方 Vary 指令 单张图片对比加强 Vary(Strong) | Vary(Subtle) 同步官方 Zoom 指令 单张图片无限缩放 Zoom out 2x | Zoom out 1.5x 新增GPT联网提问功能、手机号注册登录、签到功能、管理后台功能更新

    2024年02月13日
    浏览(67)
  • ThinkPHP 5 支付宝微信支付(支付宝H5,微信H5、APP支付、公众号支付)

     Pay.php支付控制器 模型:Weixin.php Weixin.php Alipay.php 支付宝需要的submit文件: 点击下载 wx.html在使用微信客户端支付时需要的页面    

    2024年02月08日
    浏览(35)
  • 微信H5(公众号)跳转微信小程序实现及其传参

    其中:         username:目标小程序的原始id;         path : 所需跳转的小程序内页面路径及参数( 传参采取挂参的形式传递 ); ps:目标小程序接收参数时要在index的onload里面接收直接 options.XXX就可以。 https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/url-lin

    2024年02月09日
    浏览(52)
  • 微信小程序、微信公众号、H5页面之间的跳转

    一、微信小程序与公众号 可关联已有的小程序或快速创建小程序,已关联的小程序可被使用在自定义菜单和模板消息等场景中。 公众号可关联同主体的 10 个微信小程序及不同主体的 3 个小程序,同一个小程序可关联最多 50 个公众号。 二、微信小程序与H5页面 1、微信小程序

    2024年02月06日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包