H5微信网页开发总结(网页授权,JS-SDK分享、地图)

目录:

  1. 网页授权
  2. 分享
  3. 地图

参考文档https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html

一:网页授权

目的:通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑。
本地测试准备:
1、注册一个测试号并登录,微信公众平台接口测试帐号申请,本地测试配置如图
2、微信授权可以根据你需要获取的基本信息分为两种情况:弹出授权页面和静默,(静默授权不弹出授权页面,直接跳转,只能获取用户openid。)
3、网页授权回调域名可以是本项目域名,也可以是一个中间页(另一个项目的域名,专门做为授权中间页)原因,若本地测试,回调域名可为本地ip。代码示例中写了两种情况

链接中参数说明

代码如下:

router.beforeEach((to, from, next) => {var ua = navigator.userAgent.toLowerCase()var isWeixin = ua.indexOf('micromessenger') !== -1// 判断是不是在微信中打开(可不做判断,用户无法在浏览器打开,只能在微信中浏览项目)if (isWeixin) {if (!store.state.openId && !getParams('code')) {const redirectUrl = encodeURIComponent(window.location.href)// 直接在本项目打开此链接// window.location.href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=测试号或者生产版公众号的appid&redirect_uri=' + redirectUrl + '&state=WX&response_type=code&scope=snsapi_base&connect_redirect=1#wechat_redirect'//通过中间页打开window.location.href = '中间页的域名(本地调试可以运行该项目,填写本地ip+端口)/author(后面是路由)?source=' + redirectUrlreturn false} else if (!store.state.openId && getParams('code')) {console.log('有code')const data = {code: getParams('code')}axios({method: 'get',url: '/apis/userapi/auth/getWechatBaseBySocial',params: data}).then(function (res) {console.log(res)setToken('openId', res.data.data.openid)store.commit('setOpenId', res.data.data.openid)next()}).catch(() => {next()})} else {next()}}
})

中间页代码(/author页面)

<template><div></div>
</template><script>
<template><div></div>
</template><script>
export default {name: 'author',created () {// 判断从别的地方跳转过来是什么参数// code 不存在if (!this.GetUrlParame('code')) {// 生产版:该项目线上域名const redirectUri = encodeURIComponent('http://www.xxxx.cn/author?source=' + this.GetUrlParame('source'))// 本地测试// const redirectUri = encodeURIComponent('http://10.1.18.131:8080/author?source=' + this.GetUrlParame('source') + '&path=' + this.GetUrlParame('path'))window.location.href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=xxxx&redirect_uri=' + redirectUri + '&state=WX&response_type=code&scope=snsapi_base&connect_redirect=1#wechat_redirect'} else {// code 存在时,跳转到相应的域名console.log(this.GetUrlParame('source') + '?code=' + this.GetUrlParame('code'))window.location.href = this.GetUrlParame('source') + '?code=' + this.GetUrlParame('code')}},methods: {GetUrlParame (name) {/* eslint-disable */return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.href) || [, ''])[1].replace(/\+/g, '%20')) || null/* eslint-enable */}}
}
</script><style>
</style>

用中间页作为回调域名的原因:

一个公众号后台的网页授权域名只能填写两个,若有多个项目(不同域名)都需要网页授权,便不能满足,因此可以用一个中间页,其他项目需要可在该工程下重新创建一个页面作为中间页。

测试号相关配置

修改JS接口安全域名

关注测试公众号

修改授权回调域名(本地ip或线上测试域名)

二:微信分享

步骤一:绑定域名
先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。(同上图操作)

步骤二:下载

npm install weixin-js-sdk --save

步骤三:在需要调用接口的页面引入

var wx = require('weixin-js-sdk')

具体操作:
通过config接口注入权限验证配置(签名通过后台接口获取,jsApiList为你所需要的使用的接口,例如分享或者地图)

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

// onready 对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
wx.ready(function () {
// 需在用户可能点击分享按钮前就先调用
wx.updateAppMessageShareData({ title: '', // 分享标题desc: '', // 分享描述link: '', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致imgUrl: '', // 分享图标success: function () {// 设置成功}})
})

注:

三:地图

前三步操作同分享,通过config接口注入权限验证配置同上(jsApiList添加上openLocation)

mapClick() {wx.openLocation({latitude: '纬度', // 纬度,浮点数,范围为90 ~ -90 22.534171,114.031821longitude: '经度', // 经度,浮点数,范围为180 ~ -180。name: '位置名', // 位置名address: '地址详情说明', // 地址详情说明scale: 16, // 地图缩放级别,整形值,范围从1~28。默认为最大})
},

如果遇到什么问题欢迎留言评论交流
留下你的小心心吧~~ (^-^)V

H5微信网页开发总结(授权,分享,地图)相关推荐

  1. 微信H5手机网页开发—快速入门

    序言 随着微信(WeChat)的盛行,一个流行的开发工作也随之诞生--微信公众号开发,而其中最主要的部分,当属微信H5网页开发. 虽然网页开发大家并不陌生,但层出不穷的手机型号,导致了微信网页开发中遇 ...

  2. 微信网页开发--仿美团、饿了么红包分享

    需求 这个月,公司做了一个3.8女王节的活动.当时的需求是一个水果接龙的小游戏.比如,我发起了一条接龙,然后我把这个链接分享出去,A点击这个链接就可以看见我输入的水果,然后A再分享这个链接给B,B就可 ...

  3. 微信网页开发 分享功能剖析

    微信网页开发 分享功能剖析 步骤一:绑定域名 先登录微信公众平台进入"公众号设置"的"功能设置"里填写"JS接口安全域名". 步骤二:引入J ...

  4. 微信网页开发——随手笔记

    一.公众号设置      1.账号详情:           公众号的头像.二维码.名称都是必须填写的,如果没有这些信息,是不能进行网页开发的. 2.功能设置           JS接口安全域名: ...

  5. 微信网页开发配置整理

    真是人越大记忆越差,断断续续做了几个微信小程序和微信h5项目,然鹅小程序的开发流程有些都忘了,最近刚做完一个微信h5网页开发的项目,所以赶紧记录下开发中需要注意的点,给自己往后回顾,同时也给第一次接入 ...

  6. 微信网页开发调用微信jssdk接口遇到的坑以及最终解决方法 (持续更新)

    1.微信网页开发调用jssdk时报permission denied 大致是两个原因 (1)首先注册时未将你所调用的接口名字添加至jsApiList (2)第二个就是你的这个公众号没有权限使用这个ap ...

  7. 更新一波,微信第三方开发平台授权流程

    最近一直忙于微信三方开发平台开发,更新一下,做个记录,微信第三方开发平台授权流程示例: 先看授权流程要拿到的结果: 照例先给出微信授权流程官网页面:https://open.weixin.qq.com ...

  8. 微信网页开发wx.chooseImage多图上传、预览(已解决)

    需求: 1.调用微信jsSDK选图或者拍照(选图支持选多图) 2.选图或者拍照后提供预览,但不把图片下载到服务器 3.提交表单的时候再一并提交,把图片下载到服务器 4.支持编辑页面删除已选图片(此图已 ...

  9. 微信网页开发-长按二维码无法识别问题解决

    微信网页开发-长按二维码无法识别问题解决 参考文章: (1)微信网页开发-长按二维码无法识别问题解决 (2)https://www.cnblogs.com/Tylerrrkd/p/9153949.ht ...

最新文章

  1. shell编程系列23--shell操作数据库实战之mysql命令参数详解
  2. jQuery修改页面元素的属性
  3. java 8时间操作_Java8 时间日期类操作
  4. ABP vNext微服务架构详细教程——身份管理服务
  5. 结合vue、react、angular谈谈MVC、MVP、MVVM框架
  6. python分配 使最大的最小_python3中的heapq模块使用
  7. 数据结构-树3-红黑树
  8. 在vue中实现picker样式_vue vant中picker组件的使用
  9. 翻译:自动驾驶相关术语的分类和定义Taxonomy and Definitions for Terms Related to On-Road Motor Vehicle Automated
  10. psycopg2 (python与postgresql)
  11. 大型交通流仿真平台——Matsim中文使用手册05
  12. NNDL 实验三 线性回归
  13. 什么是 Hook 技术
  14. Lvgl7 基础对象(lv_obj)
  15. 安心之法-斯多葛哲学学派,近年来在美国非常流行
  16. ★一人一首成名歌曲★
  17. 【老九学堂】【C语言】CodeBlocks安装文档
  18. 解密编程——程序诞生的基本工序
  19. Microsoft Excel 教程:如何在 Excel 中使用 COUNTIF 函数?
  20. python将英文翻译为中文_Python使用百度翻译开发平台实现英文翻译为中文功能示例...

热门文章

  1. Halcon 3D 切片法检测物料
  2. solidworks遇到错误卸载的提示的解决方法
  3. 导出数据到excel文件
  4. Live800:在线客服系统如何帮助企业创造持续的服务价值?
  5. php框架 thinkphp,生手搭建ThinkPHP框架
  6. Flutter仿微信发送语音动画
  7. php如何获取下拉列表的值,php 获取select下拉列表框的值
  8. 前端JavaScript AES解密 AES加密 ECB模式
  9. Windows如何关闭被占用的端口?
  10. 华为运营商级路由器配置示例 | 配置OptionA方式跨域BGP AD VPLS示例