H5分享h5页面、小程序到微信

1、H5分享h5页面(卡片链接形式)到微信

先去微信公众平台填写js接口安全域名

本来想用微信开发js-sdk的,但是做了半天好像没啥效果

概述 | 微信开放文档 (qq.com)

引入js文件:http://res.wx.qq.com/open/js/jweixin-1.6.0.js

 代码部分:

单独的h5是唤不起微信的,需要原生app去集成微信的sdk,app去调微信的方法,h5再去调app的方法,才可以实现

接下来使用插件:m-share

m-share: h5页面分享组件、支持分享到微信、朋友圈、新浪微博、QQ空间、QQ好友。 (gitee.com)

注意:这种方法也是用native+微信的js-sdk实现的,且在浏览器很受限制,只有qq和uc支持

步骤一:

微信公众平台填写js接口安全域名

步骤二:

先去安装插件,因为是uniapp的项目,没有package.json文件,所以先去项目根目录cmd后执行:

npm init -y

 npm install m-share

步骤三:

<template>
	<view class="">
		<view><button @click="but">分享</button></view>
		<view><button @click="pyq">分享朋友圈</button></view>
	</view>
</template>

<script>
import Mshare from 'm-share';  //引入微信分享插件
export default {
	data() {
		return {
			isWechant:false  
		};
	},
	onLoad() {
		this.isWechantFun()  
		console.log(Mshare, 'Mshare',this.isWechant);
	},
    async created() {
		Mshare.init(this.getWxConfig()); //插件初始化
		if (this.isWechant) {
			this.getWxConfig();
		}
	},
	methods: {
		isWechantFun() {   //判断是否在微信环境
			var ua = window.navigator.userAgent.toLowerCase();
			if (ua.match(/MicroMessenger/i) == "micromessenger") {
				this.isWechant=true;
			} else {
				this.isWechant= false;
			}
		},
		getWxConfig() {       //Mshare.init初始化配置
			let url = location.href.split('#')[0];
			console.log(url, 'url微信分享调接口参数');
			uni.request({        //后端获取签名信息等
				url: '*****',
				method: 'POST',
				data: {
					url: location.href.split('#')[0]
				},
				success: res => {
					let result = res.data.data;
					console.log(result, '获取微信签名');
					Mshare.wxConfig({
						title: '微信分享的标题',
						desc: '微信分享的介绍详情',
						imgUrl: 'http://****',
						link:'http://***',
						wx: {
							debug: true,
							appId: result.appId,
							timestamp: result.timestamp,
							nonceStr: result.noncestr,
							signature: result.signature
						},
						infoMap: {
							wx: {
								title: '微信分享的标题',
						        desc: '微信分享的介绍详情',
						        imgUrl: 'http://****',
						        link:'http://***',
							}
						}
					});
				}
			});
		},
		
		innitConfig() {         // Mshare初始化
			let config = {
				title: '微信分享的标题',
				desc: '微信分享的介绍详情',
				imgUrl: 'http://****',
				link:'http://***',
				types: ['wx', 'wxline', 'qq', 'qzone', 'sina'],
				infoMap: {
					wx: {
						title: '微信分享的标题',
						desc: '微信分享的介绍详情',
						imgUrl: 'http://****',
						link:'http://***',
					}
				},
				fnDoShare(type) {
					console.log('分享回调:', type);
				}
			};
			return config;
		},

		but() {    //点击分享
			Mshare.to('wx', this.innitConfig());   //分享到微信聊天
			 	// Mshare.to('wxline', this.innitConfig());   //分享到微信朋友圈
		} 
	}
};
</script>

<style></style>

分为两种情况:1:在浏览器分享会唤起分享框--分享成功为卡片形式,2:在微信打开就只是引导用户去点三个点去分享--分享成功为链接形式(link的值)

如果是App的话使用uniapp官方提供的api:uni.share

const ShareWXSenceTimeline = (data) => {
		// 微信朋友圈分享
		// #ifdef H5
		vm.$u.toast('H5暂不支持分享功能')
		return
		// #endif
		// #ifdef H5
		uni.share({
			provider: "weixin",
			type: 0,
			scene: "WXSenceTimeline",
			href: ,  //链接
			title: this.title,//标题
			summary:this.title,//内容
			imageUrl:this.company_logo,//图片
			success() {
				// 分享完成,请注意此时不一定是成功分享
				uni.hideLoading()
			},
			fail(e) {
				uni.hideLoading()
				// 分享失败
				uni.showModal({
					title: '提示',
					content: e.msg || '分享失败',
					showCancel: false,
					cancelText: '',
					confirmText: '确定',
					success: res => {},
					fail: () => {},
					complete: () => {}
				});
			}
		})
		// #endif
	}

2、H5分享小程序到微信(调用小程序)

先判断在哪个浏览器中:

		isWx() {
			//判断是否为微信
			var ua = window.navigator.userAgent.toLowerCase();
			if (ua.match(/MicroMessenger/i) == 'micromessenger') {
				return true;
			}
			return false;
		},

1)、在微信浏览器中

目录 | 微信开放文档 (qq.com)

先注入微信权限在onload中调用 

		getWxConfig() {
			uni.request({
				url: 'https:/*****************',
				method: 'POST',
				data: {
					url: location.href.split('#')[0]
				},
				success: res => {
					let result = res.data.data;
					console.log('result', result, {
						debug: false,
						appId: result.appId,
						timestamp: result.timestamp,
						nonceStr: result.noncestr,
						signature: result.signature,
						jsApiList: ['scanQRCode', 'updateAppMessageShareData', 'updateTimelineShareData'], // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
						openTagList: ['wx-open-launch-weapp']
					});
					wx.config({
						debug: false,
						appId: result.appId,
						timestamp: result.timestamp,
						nonceStr: result.noncestr,
						signature: result.signature,
						jsApiList: ['scanQRCode', 'updateAppMessageShareData', 'updateTimelineShareData'], // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
						openTagList: ['wx-open-launch-weapp']
					});

					wx.ready(function() {
						console.log('ready');
					});
				}
			});
		},

视图及事件 

this.wxPath = 'pages/homepage/home?label_no=' + this.label_no;

--------------------------------------------


<div class="btn active" v-bind:class="{ Taa: isclass }" v-if="isWx()">
						<wx-open-launch-weapp
							id="launch-weapp"
							username="gh_********"
							:path="wxPath"
							@launch="onLaunch"
							@error="onError"
						>
							<script type="text/wxtag-template">
									<div  class='wxbtn'>
										进入房间
									</div>
								<style>
									.wxbtn{
										color:#fff;
										line-height:33px;
									font-size:20px;
									margin:5px 0;
									}
								</style>
							</script>
						</wx-open-launch-weapp>
					</div>

-----------------------------------------------

		onLaunch() {
			alert('onLaunch');
		},
		onError() {
			alert('error');
		},

2)、在其他浏览器中
获取 URL Scheme | 微信开放文档 (qq.com)

					<u-button
						class="btn active"
						v-bind:class="{ Taa: isclass }"
						type="primary"
						size="medium"
						@tap="getscheme"
						v-else
					>
						进入房间
					</u-button>


---------------------------------------------------

		getscheme() {
			
			let _this=this;
			if(this.label_no!==''){
			uni.request({
				url: this.siteBaseUrl+'/appBaseUser/generatescheme',
				method: 'POST',
				data:{
					url:'pages/homepage/home',
					query:"label_no=" + this.label_no
				},
				success(res) {
					if(_this.label_no!==''){
					location.href = res.data.data.openlink;
					}
					
				}
			});}
		},

3、H5分享图片到微信

app是可以实现的,app的内嵌h5也可以实现,单独的h5不能实现

如果是App的话使用uniapp官方提供的api:uni.share

(100条消息) h5 点击按钮生成图片分享微信朋友圈_后端点击按钮分享朋友圈怎么弄_有脾气的程序媛的博客-CSDN博客

H5保存图片到本地

h5在浏览器保存图片到本地也是不太可行的, 

如果是App的话使用uniapp官方提供的api:

 具体代码参考:(100条消息) APP、H5保存图片到本地_白酱酱的博客-CSDN博客

猜你喜欢

转载自blog.csdn.net/m0_65720832/article/details/130105902