微信公众号网页开发-分享朋友或朋友圈

!!!看到最后!!!

一 、获得网页授权 微信网页开发-网页授权

  1. 拿到URL
const appid = '你的服务号的appid';
const redirect_uri = encodeURI('你网页的域名地址(开发者需要先到公众平台官网中的「设置与开发」-「功能设置」-「网页授权域名」的配置选项中,修改授权回调域名。上面文档里有写)');
const URL= `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${redirect_uri}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect`;
  1. 在微信开发工具打开

在这里插入图片描述
在这里插入图片描述
3. 调试分享,根据文档一步一步来 微信网页开发-JS-SDK说明文档

  1. 在项目安装 pnpm install weixin-js-sdk --save;
  2. 引入 import wx from ‘weixin-js-sdk’;
  3. 代码如下
const code = searchParams.get('code') || '';


// 判断当前环境是否是在ios
const isIOS = function() {
     var isIphone = navigator.userAgent.includes('iPhone');
     var isIpad = navigator.userAgent.includes('iPad');
     return isIphone || isIpad;
}
// 调用用户授权
const getWxCode = () => {
        let ourl = window.location.href.split('#')[0];
        const appid= 'appid';
        const redirect_uri = encodeURI(ourl);
        const url = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${redirect_uri}&response_type=code&scope=snsapi_userinfo&state=&connect_redirect=1#wechat_redirect`
        window.location.href = url
    }

// 加载时就调用
useEffect(() => {
	// 注:我是通过页面地址有没有code值去判断是否从分享链接进的详情
	const userData = sessionStorage.getItem('userData '); // 这是我在进列表的时候保存的用户信息
	if(userData) {
		// 列表进来
		// 进行权限验证
		getJsapiTicket()
		// 自己业务代码......
	} else if(code) {
		// 分享链接进来-已授权
		// 进行权限验证
		getJsapiTicket()
		// 自己业务代码......
	} else {
		// 分享链接进来-未授权,需要重新授权
		getWxCode()
	}
}, [])

// 权限验证
const getJsapiTicket = () => {
   let ourl = window.location.href.split('#')[0];
   if(isIOS() && !code){ // 注: 用户正常进入(即从列表进入详情)ourl需要用localStorage存储的数据
       // 解决ios微信内部分享单页面记录初始url,如果用location.href,签名会匹配错误
       ourl = localStorage.getItem('shurl') || ''
   }
   tosharewx(ourl)
}

// 进行config接口注入权限验证配置
const tosharewx = (ourl) => {
	getJsapiTicket({
		url: ourl
	}).then(res => {
		wx.config({
			debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
			appId: res.data.appid, // 必填,公众号的唯一标识
			timestamp: res.data.timestamp, // 必填,生成签名的时间戳,由开发者生成的当前时间戳
			nonceStr: res.data.nonceStr, // 必填,生成签名的随机串,由开发者随机生成
			signature: res.data.signature, // 必填,签名
			// 必填,需要使用的JS接口列表
			jsApiList: [
				'updateAppMessageShareData',
				'updateTimelineShareData',
			]
		})
		wx.ready(() => {
			//分享给朋友接口--如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行
			//分享给微信朋友或者QQ好友
	           wx.updateAppMessageShareData({ 
	               title: '标题', // 分享标题
	               desc: '描述', // 分享描述
	               link: 'url', // 分享链接
	               imgUrl: 'imgUrl' // 分享图标
	               success: function () {
	                 // 设置成功
	                 // console.log('分享成功')
	               },
	               cancel: function cancel() {
	                   console.log('已取消');
	               },
	               fail: function fail(res) {
	                   // console.log('分享失败', res)
	               }
	           })
	           // 分享给朋友圈或者QQ空间
	           wx.updateTimelineShareData({ 
	               title: '标题', // 分享标题
	               link: 'url', // 分享链接
	               imgUrl: 'imgUrl', // 分享图标
	               success: function () {
	                 // 设置成功
	                 // console.log('分享成功')
	               },
	               cancel: function cancel() {
	                   console.log('已取消');
	               },
	               fail: function fail(res) {
	                   // console.log('分享失败', res)
	               }
	           })
		});
		wx.error(err => {
			console.log(err, '接口验证失败');
		});
	})
}
  1. 分享成功

    在这里插入图片描述

二、遇到问题,敲重点!!!

问题1:拿到配置好用户授权的URL=https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${redirect_uri}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect地址,进入详情页面进行分享时不管是在ios还是在安卓上一直是一个链接,并不是自己设置好的卡片,如图
在这里插入图片描述
后面在社区看到一个类似的问题H5分享链接不显示自定义标题和图片?看到了官方的这个回答,如下图
在这里插入图片描述
解决:从这三个入口进就能正常分享了,如下图
在这里插入图片描述

问题2:在ios上分享的时候,一直报 errMsg: “updateAppMessageShareData:fail, the
permission value is offline verifying”,安卓正常;官方对签名失败的排查说明如下图,发现最后还是url问题。
解决:ios是要传刚进入的页面url(项目启动的第一个页面地址), 安卓就实时取url可以了

  • 在这里插入图片描述
  • 9
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
对于开发Vue微信公众号网页,你可以按照以下步骤进行: 1. 创建项目:首先,你需要创建一个Vue项目。你可以使用Vue CLI来快速创建一个Vue项目,运行命令`vue create project-name`来创建一个新的项目。 2. 配置公众号:在微信公众号后台,你需要配置网页授权域名和JS接口安全域名。确保你的网页域名和JS接口安全域名与你的Vue项目所在的域名一致。 3. 安装依赖:在Vue项目中,你可能需要安装一些依赖来处理微信公众号相关的功能。你可以使用npm或者yarn来安装这些依赖。 4. 配置路由:在Vue项目中,你可以使用Vue Router来管理页面的路由。根据你的需求,配置路由来实现不同页面之间的跳转。 5. 接入微信SDK:使用微信提供的JS-SDK来实现网页授权和获取用户信息等功能。你可以在Vue项目中引入微信SDK,并根据微信JS-SDK的文档进行配置和使用。 6. 开发页面:根据你的需求,开发各个页面。你可以使用Vue的组件化开发方式来构建页面,并使用Vue的数据绑定和事件机制来实现交互功能。 7. 发布上线:完成开发后,你需要将Vue项目打包并发布到生产环境中。使用Vue CLI提供的命令来进行打包,然后将生成的静态文件部署到服务器上。 以上是一个简单的概述,希望对你有所帮助。如果你有具体的问题或者需要更详细的指导,请随时提问。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值