h5 微信授权获取微信code值

微信授权流程:先获取微信code值,再让后端通过code值去微信拿个人信息,然后通过个人信息里的openid来进行绑定
也解决了code 40163问题重复使用的问题

<view class="pick pick_line">
	<view class="left">
		<view class="pic">
			<image :src="wxImgPath" mode="aspectFill"></image>
		</view>
		<view class="title">
			微信
		</view>
	</view>
	<view class="right">
		<view class="tip tip_black" @tap="ispop = true" v-if="userInfo.is_wechat==1">
			已绑定
		</view>
		<view @tap="Auth(1)" class="tip" v-else>
			未绑定
		</view>

		<view class="right_icon">
			<image src="/static/icons/set_right.png" mode=""></image>
		</view>
	</view>
</view>
data() {
	return {
		code:'',//微信code
		openid:'',//当前程序唯一标识
	}
},
onLoad(option) {
	this.getIsAuth();
},
onUnload(){
	this.$cache.remove('securityUrl');
},
methods: {
	//查看url是否有参数,有参数就说明是授权后回调打开的页面
	getIsAuth(){
		let u = location.href;//拿取当前url
		let a = u.split('?');//将url截开
		
		var aa = this.$cache.get('securityUrl');//看缓存有没有当前页的url
		
		//根据url后面是不是有参数来判断是否有获得微信code值
		if(a.length >= 2){
			if(!aa){
				//将当前url存储,因为去微信授权拿code再返回来页面的路径会变
				this.$cache.put('securityUrl', a[0]);//将当前页的url存储,携带的参数不要
			}
			let c = a[1].split('&')
			let d = c[0].split('=')[1];//微信code值
			this.code = d;
			this.getAccess(1);
		}else{
			if(!aa){
				//将当前url存储,因为去微信授权拿code再返回来页面的路径会变
				this.$cache.put('securityUrl', u);//将当前url存储
			}
		}
	},
	//解绑第三方授权
	unbindThirdAuth(num) {
		//封装的请求
		this.$request.unbindThirdAuth(obj,this)
		.then(res =>{
			if(res.code == 0){
				if(num == 1){
					this.code = '',//微信code
					this.openid = '',//当前程序唯一标识	
				}
				uni.showToast({
					title:'解绑成功',
					icon:'success',
					duration:1500
				})
			}else{
				uni.showToast({
					title:res.message,
					icon:'none',
					duration:2000
				})
			}
		})
		.catch(res =>{
			uni.showToast({
				title:res.message,
				icon:'none',
				duration:2000
			})
		})
	},
	/**
	 * 获取url中code
	 */
	Auth(num) {
		//微信绑定授权
		if(num == 1){
			// 判断浏览器类型
			let isWeChat = this.$func.isWeChat()
			this.isWeChat = isWeChat
			if (!isWeChat) {
				uni.showToast({
					title:'请用微信浏览器打开再授权',
					icon:'none',
					duration:2000
				})
				return;
			}
			this.sendCode() // 获取code,每绑定一次都要拿新的code,不能重复利用
		}
	},
	/**
	 * 跳转微信用户授权页
	 * 用户同意就会打开redirect_uri后拼接的链接页面,并且携带着code值和state数据
	 */
	sendCode() {
		var nowUrl; 
		var u = this.$cache.get('securityUrl');//从缓存里拿到当前页的url,且URL后面没有携带参数的
		if(!u){
			nowUrl = location.href;
		}else{
			nowUrl = u;
		}
		let link = encodeURIComponent(nowUrl);//编码
		let appid = getApp().globalData.wxAppid;//微信支付公众号id
		//跳转微信授权页并获取code,然后他会通过redirect_rui来重新跳回你指定的页面
		let url = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' + appid + '&redirect_uri=' + link +
			'&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect'
		location.href = url;
	},
	/**
	 * 通过code获取access_token
	 */
	getAccess(num) {
		let data = {
			code: this.code,
		}
	
		//将code给后端,通过接口拿取用户信息
		this.$request.userOuth(data, this)
			.then(res => {
				if(res.code == 0){
					this.authObj = res.data;
					if(num == 1){
						this.openid = res.data.openid;
						this.bindThirdAuth(1);
					}
				}else{
					uni.showToast({
						title:res.message,
						icon:'none',
						duration:2000
					})
				}
			})
			.catch((error) => {
				uni.showToast({
					title:error.message,
					icon:'none',
					duration:2000
				})
			})
	},
	//用户微信绑定账号
	bindThirdAuth(num){
		//封装的请求
		this.$request.bindThirdAuth(obj,this)
		.then(res =>{
			if(res.code == 0){
				uni.showToast({
					title:'绑定成功',
					icon:'success',
					duration:1500
				})
			}else{
				uni.showToast({
					title:res.message,
					icon:'none',
					duration:2000
				})
			}
		})
		.catch(res =>{
			uni.showToast({
				title:res.message,
				icon:'none',
				duration:2000
			})
		})
	}
	}
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 微信code获取开发文档是指微信提供的针对H5调用微信授权获取code的文档,用于帮助开发者了解和使用微信授权功能。 微信授权是指用户在微信客户端中对第三方应用授权授权后第三方应用可以通过用户的code获取用户的基本信息,例如昵称、头像等。 H5调用微信授权获取code是指在H5页面中使用微信提供的API,引导用户进行微信授权操作,并获取用户的code。开发者可以通过code换取用户的access_token,从而获取用户的基本信息。 微信code获取开发文档包含了微信授权的整个流程和使用方法,具体包括以下内容: 1. 授权流程:详细描述用户在微信客户端中授权的整个流程,包括用户点击授权按钮、跳转到微信授权页面、用户同意授权等步骤。 2. 接口说明:介绍了H5页面中需要调用的微信API,包括引导用户授权的接口、获取用户code的接口等。 3. 参数说明:详细描述了每个接口需要传递的参数,包括授权作用域、应用ID、重定向URL等。 4. 返回说明:说明了每个接口返回的结果,如code、access_token等。 通过阅读微信code获取开发文档,开发者可以了解如何在H5页面中调用微信授权功能,重点掌握用户授权的流程和参数的使用方法。同时,开发文档还提供了示例代码和常见问题的解答,方便开发者理解和使用微信授权功能。 总而言之,微信code获取开发文档是帮助开发者在H5页面中调用微信授权功能的指南,提供了全面的接口说明和使用方法的文档。通过该文档,开发者可以实现在微信公众号或微信页面开发的网页中获取用户的授权信息。 ### 回答2: 微信code获取开发文档是微信公众号开发文档中的一部分,用于指导开发者如何在H5页面中通过微信授权获取用户的code。在微信公众号中,开发者可以通过H5页面开发功能,将自己的网页嵌入到微信客户端中。这样用户在访问该网页时,可以直接在微信中打开,无需跳转到外部浏览器。 为了获取用户的授权,开发者需要在相应的H5页面中调用微信提供的授权接口,以获取用户的code。这个code是临时的,每次用户进入页面都会重新生成,且有效期为5分钟。开发者在获取code后,可以通过code来换取用户的openid,以便进行后续的操作。 在微信公众号开发文档中,开发者可以找到关于如何在H5页面中调用微信授权获取code的具体步骤和示例代码。文档中涵盖了参数的设置、接口的调用方式以及返回结果的解析等内容,帮助开发者快速理解和实现微信授权功能。 通过阅读微信code获取开发文档,开发者可以了解到如何在H5页面中嵌入微信授权功能,实现登录、绑定等操作,提升用户体验和功能扩展性。这对于微信公众号的开发人员来说,是非常重要的参考指南。 ### 回答3: 微信code获取开发文档是微信提供的一份技术文档,用于指导开发者在H5页面上调用微信授权接口,实现获取用户授权code的功能。该文档详细介绍了各种代码示例和接口调用方法,帮助开发者了解如何在微信公众号和微信页面开发中使用网页授权功能。 在微信公众号和微信页面开发中,如果需要获取用户的基本信息或进行用户登录验证等功能,就需要先获取用户的授权code。开发者可以通过H5页面上的按钮或链接等方式,调用微信授权接口,将用户导向微信登录页面并请求授权。用户确认授权后,微信会通过回调URL返回一个带有code参数的URL地址。 通过阅读微信code获取开发文档,开发者可以了解如何构造授权链接URL,并对回调URL的处理方式进行说明。文档中还包括了接口的参数说明、权限说明、错误码列表等内容,帮助开发者快速、准确地调用接口,实现微信授权功能。 总之,微信code获取开发文档是一份重要的技术文档,为开发者提供了详细的接口使用说明和示例代码,帮助他们在H5页面中调用微信授权接口,获取用户授权code,实现各种微信公众号和微信页面开发的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值