H5微信网页开发总结(授权,分享,地图)
H5微信网页开发总结(网页授权,JS-SDK分享、地图)
目录:
- 网页授权
- 分享
- 地图
参考文档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微信网页开发总结(授权,分享,地图)相关推荐
- 微信H5手机网页开发—快速入门
序言 随着微信(WeChat)的盛行,一个流行的开发工作也随之诞生--微信公众号开发,而其中最主要的部分,当属微信H5网页开发. 虽然网页开发大家并不陌生,但层出不穷的手机型号,导致了微信网页开发中遇 ...
- 微信网页开发--仿美团、饿了么红包分享
需求 这个月,公司做了一个3.8女王节的活动.当时的需求是一个水果接龙的小游戏.比如,我发起了一条接龙,然后我把这个链接分享出去,A点击这个链接就可以看见我输入的水果,然后A再分享这个链接给B,B就可 ...
- 微信网页开发 分享功能剖析
微信网页开发 分享功能剖析 步骤一:绑定域名 先登录微信公众平台进入"公众号设置"的"功能设置"里填写"JS接口安全域名". 步骤二:引入J ...
- 微信网页开发——随手笔记
一.公众号设置 1.账号详情: 公众号的头像.二维码.名称都是必须填写的,如果没有这些信息,是不能进行网页开发的. 2.功能设置 JS接口安全域名: ...
- 微信网页开发配置整理
真是人越大记忆越差,断断续续做了几个微信小程序和微信h5项目,然鹅小程序的开发流程有些都忘了,最近刚做完一个微信h5网页开发的项目,所以赶紧记录下开发中需要注意的点,给自己往后回顾,同时也给第一次接入 ...
- 微信网页开发调用微信jssdk接口遇到的坑以及最终解决方法 (持续更新)
1.微信网页开发调用jssdk时报permission denied 大致是两个原因 (1)首先注册时未将你所调用的接口名字添加至jsApiList (2)第二个就是你的这个公众号没有权限使用这个ap ...
- 更新一波,微信第三方开发平台授权流程
最近一直忙于微信三方开发平台开发,更新一下,做个记录,微信第三方开发平台授权流程示例: 先看授权流程要拿到的结果: 照例先给出微信授权流程官网页面:https://open.weixin.qq.com ...
- 微信网页开发wx.chooseImage多图上传、预览(已解决)
需求: 1.调用微信jsSDK选图或者拍照(选图支持选多图) 2.选图或者拍照后提供预览,但不把图片下载到服务器 3.提交表单的时候再一并提交,把图片下载到服务器 4.支持编辑页面删除已选图片(此图已 ...
- 微信网页开发-长按二维码无法识别问题解决
微信网页开发-长按二维码无法识别问题解决 参考文章: (1)微信网页开发-长按二维码无法识别问题解决 (2)https://www.cnblogs.com/Tylerrrkd/p/9153949.ht ...
最新文章
- shell编程系列23--shell操作数据库实战之mysql命令参数详解
- jQuery修改页面元素的属性
- java 8时间操作_Java8 时间日期类操作
- ABP vNext微服务架构详细教程——身份管理服务
- 结合vue、react、angular谈谈MVC、MVP、MVVM框架
- python分配 使最大的最小_python3中的heapq模块使用
- 数据结构-树3-红黑树
- 在vue中实现picker样式_vue vant中picker组件的使用
- 翻译:自动驾驶相关术语的分类和定义Taxonomy and Definitions for Terms Related to On-Road Motor Vehicle Automated
- psycopg2 (python与postgresql)
- 大型交通流仿真平台——Matsim中文使用手册05
- NNDL 实验三 线性回归
- 什么是 Hook 技术
- Lvgl7 基础对象(lv_obj)
- 安心之法-斯多葛哲学学派,近年来在美国非常流行
- ★一人一首成名歌曲★
- 【老九学堂】【C语言】CodeBlocks安装文档
- 解密编程——程序诞生的基本工序
- Microsoft Excel 教程:如何在 Excel 中使用 COUNTIF 函数?
- python将英文翻译为中文_Python使用百度翻译开发平台实现英文翻译为中文功能示例...