微信浏览器h5分享卡片模式

微信内置浏览器中的h5想要分享给朋友或者朋友圈的时候是卡片模式并且带图片和标题

需要用到微信的jweixin-module包, 这里拿在uni的h5项目中作为例子

安装包 npm install jweixin-module --save 和 npm install sha1 --save 如果由后端来加密签名那就不需要安装sha1

<script>
const jweixin = require('jweixin-module')
import sha1 from 'sha1'
import randomString from '@/utils/randomString.js'
export default {
    onLaunch() {
        this.weiXinShareFn()
    },
    methods: {
        weiXinShareFn() {
            // 获取url
            const linkUrl = window.location.href.split('#')[0]
			const u = navigator.userAgent
			const isWeixin = u.toLowerCase().indexOf('micromessenger') !== -1
            // 判断当前是否在微信浏览器内
            if (isWeixin) {
                // 这里需要请求后端配置的接口
                uni.request({
					url: 'http://xxxxxx',
					method: 'GET',
					data: { code: 'cws_gzh' },
					success: res => {
						//返回jsapi码
						const ticket = res.data.ticket || ''
						//时间戳
						const timestamp = Math.round(new Date().getTime() / 1000).toString()
						//随机字符串
						const nonceStr = randomString()
						//签名算法(微信给的格式)
						const jsons = `jsapi_ticket=${ticket}&noncestr=${nonceStr}&timestamp=${timestamp}&url=${linkUrl}`
						// 把签名转为sha算法
                        const signature = sha1(jsons)
						jweixin.config({
							debug: false,   // 调试模式
							appId: 'xxxxxxx',      // 公众平台申请的id
							timestamp,       // 时间戳
							nonceStr,        // 随机字符串
							signature,       // 签名
							jsApiList: [     // 申请需要使用的api
								'updateAppMessageShareData',
								'updateTimelineShareData'
							]
				        })

                        jweixin.ready(() => {
							const shareData = {
								title: 'xxxx',  // 标题
								desc: 'xxxxxxxx',    //详情
								link: linkUrl,   // h5链接
								imgUrl: ''      // 图片链接 只能是网络连接
							}
							//分享给朋友
							jweixin.updateAppMessageShareData(shareData)
							//分享到朋友圈
							jweixin.updateTimelineShareData(shareData)
						})
                    }
                })
            }
        }

    }
}
</script>
// 随机字符串
export default function randomString(len) {
   const = len || 16
  const str = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678'
   const maxPos = str.length;
   let value = ''
  for (let i = 0; i < len; i++) {
   value += str.charAt(Math.floor(Math.random() * maxPos))
  }
  return value;
}

如果是原生的h5页面就需要导入cdn

<script src="http://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>

并且方法不再用jweixin.xxx 而是用wx.xxx

微信官方说明文档:概述 | 微信开放文档

后端怎么获取ticket凭证的方法都在文档中有说明

 注意一个很坑的问题,如果该h5链接是添加在公众号底部菜单栏的话,那么打开并分享的时候是正常的。  但是如果用户是从一个聊天界面,或者说用户是直接点击这个h5的链接进来的这个时候再分享出去给其他好友那么还是一条链接而已,不会是一个带图片标题的卡片。解决办法是需要进入这个h5后然后收藏,最后在我的微信收藏中分享出去这样才会是一个带图片标题的卡片

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值