uniapp h5(公众号)微信授权登录

文章介绍了如何在uniapp中使用微信授权登录功能,包括通过按钮触发获取code的过程,以及在onLoad生命周期中处理code的情况。同时提到了回调地址和code参数的管理。
摘要由CSDN通过智能技术生成

uniapp 如果是按钮登录做一个按钮就好了 如果不是按钮登录 就将代码放在onloadl里面即可

  1. 授权登录页面
    授权按钮
	<button class="wechat-logo" @click="getWeChatCode">微信授权登录</button>

js代码

<script>
export default {
	
	data() {
		return {
			
		};
	},
			onLoad(option) {
			
			},
			onShow() {
				// console.log(1112,location.href)
			},

    methods: {
		// 重定向到某个面检查有没有code 重定向的页面为redirect_uri参数页面该也可以是本页面 也可以是其他页眉只是后面的方法不一样了 该参数是后端配置
		checkWeChatCode() {
			let code = this.getUrlCode('code');
			let http = this.getUrlCode('http');
			console.log(22,code,http,encodeURIComponent(location.href))
			if(code) {
				// this.handleToLogin(code)  //该方法如果回调页面是在本页面才使用 我这里的实例没有使用回调页面使用了
				console.log(23)
			}
		}, 
		// 正则匹配请求地址中的参数函数 该方法是获取地址里面的某个参数值的 这里没有使用到 如果你的redirect_uri回调页面是本页面就可以用上 这里我就不删了
		getUrlCode(name) {
			return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.href) ||[, ''])[1].replace(/\+/g, '%20')) || null
		},
		// 看地址中有没有code参数,如果没有code参数的话则请求微信官方的接口并获取包含code的回调链接
		getWeChatCode() {
			//用于退出登录回来不会再调一次授权登录
			uni.setStorageSync('wechat_login_tag', 'true');
						
			const appID = 'wxe5cb2587e7687259';  //公众号appID
			// const callBack = 'https%3A%2F%2Fh5.yulinkeji.cn%2Fh5%2Findex.html%23%2Fpages%2Findex%2Findex'; //回调地址 就是你的完整地址登录页
			const callBack = 'https://h5.yulinkeji.cn/h5/index.html'; //回调地址 就是你的完整地址登录页
						
			//通过微信官方接口获取code之后,会重新刷新设置的回调地址【redirect_uri】
			// window.location.href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' +
			// 				appID + '&redirect_uri=' + encodeURIComponent(callBack)+   //看后端给你的是否已经转码 转码了就不用encodeURIComponent
			// 				'&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect'
							
			window.location.href = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxe5cb2587e7687259&redirect_uri=https%3A%2F%2Fh5.yulinkeji.cn%2Fh5%2Findex.html%23%2Fpages%2Ftab%2Fmy&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect`
			// location.herf 该url中除了重定向地址,其他的全是官方文档提供。
		},
		
		
	}
}
</script>

在这里插入图片描述

  1. 跳转后的页面()
    js代码
export default {
		data() {
			return {
				list:[],
				score:{},
				id:0,
			};
		},
		onLoad(parm) {
			console.log('545',window.location)
			let that =this
			that.cont()
			// that.jifen()
			
		},
		onShow() {
			console.log('8')
		},
		methods:{
			// 正则匹配请求地址中的参数函数
			getUrlCode(name) {
				return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.href) ||[, ''])[1].replace(/\+/g, '%20')) || null
			},
			cont(){
				let code = this.getUrlCode('code'); // 截取路径中的code,如果没有就去微信授权,如果已经获取到了就直接传code给后台获取openId
				    const local = window.location.href;
					console.log(343,code)
				   this.handleToLogin(code)
			},
			handleToLogin(code) {
				this.$api.post('/Wxuser/login',{
					code:code
				}).then(res => {
					
					this.id = res.data.id
					console.log('登录成功',code,res.data,this.id)
					uni.redirectTo({
						url: '/pages/tab/index'
					})
				})
				this.jifen()
			},
			jifen(){
				let that = this
				if(!that.id){
					setTimeout(()=>{
						that.jifen()
					},2000)
				}
				that.$api.post('/Topic/user',{uid:that.id}).then(res=>{
					that.score = res.data[0]
					console.log(111,that.score,that.id)
				})
			},

		}
	}

在这里插入图片描述

很浅薄的描述 ,欢迎各位大佬来指正

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Uniapp中,我们可以通过使用相关插件或API实现公众号H5和小程序微信授权登录功能。 对于公众号H5授权登录,我们可以使用uni-login插件或通过uni.request发起微信官方授权登录的接口。首先,在公众号H5页面中,我们需要引入相应的JS-SDK,并使用wx.config配置公众号AppID和权限等信息。然后,在登录按钮的点击事件中,调用wx.checkSession来检查当前用户的登录态是否有效。若无效,再调用wx.login获取code,并通过wx.request发起后台请求来换取用户的access_token和openId等信息。最后,我们可以将这些信息保存起来,并根据需求进行相应的业务逻辑处理。 对于小程序的微信授权登录功能,在Uniapp中可以通过使用uni.login和uni.getUserInfo API来实现。首先,在小程序的入口页面中,在onLaunch生命周期里调用uni.login获取用户的登录凭证code,并将code传给后台服务器。后台服务器通过wx.login接口获取到用户信息后,再校验用户的身份。然后,在登录按钮的点击事件中,调用uni.getUserInfo获取用户的信息,并存入本地缓存,以供后续使用。接着,我们可以根据需要进行相应的业务逻辑处理。 需要注意的是,在实现公众号H5和小程序微信授权登录功能时,我们需要保证项目中已经配置了相关的权限和配置信息,并正确处理各种回调和错误情况。同时,为了保护用户的隐私和安全,我们还需要合理处理用户信息的存储和使用,尽量避免泄露和滥用用户的个人信息。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值