微信小程序用户手机号授权登录

一.uniapp小程序开发

自2023年8月28日起,手机号快速验证组件将需要付费使用。标准单价为:每次组件调用成功,收0.03元。每个小程序账号将有1000次体验额度,用于开发、调试和体验。该1000次的体验额度为正式版、体验版和开发版小程序共用,超额后,体验版和开发版小程序调用同正式版小程序一样,均收费

更多关于信息请查看官方文档

二.开发教程

1.前端代码

<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">登录</button>
            getPhoneNumber(e) {
				this.getPhoneNum(e).then(res => {
					if (res) {
						uni.showToast({
							title: '授权成功',
							icon: 'success'
						})
					}
				})
			},
	getPhoneNum(e) {
		return new Promise((resolve, reject) => {
		console.log('e.detail.code',e.detail.code)
		let PhoneCode=e.detail.code
		let detail = e.detail;
		// console.log(detail.errMsg)
		if (detail.errMsg == "getPhoneNumber:ok") {
			uni.login({
				provider: 'weixin',
				success: (res) => {
					if (res.errMsg = 'login:ok') {
						console.log('res.code',res.code)
						uni.getUserInfo().then(response => {
							console.log('response',response)
							Vue.prototype.$u.api.wxLogin({
								encryptedData: response[1].encryptedData,
								iv: response[1].iv,
								loginCode: res.code,
								phoneCode: PhoneCode
							}).then(data => {
								if(data.code===200){
									console.log('data',data)
									// console.log(data.data)
									Vue.prototype.$u.vuex('vuex_token', data.msg
										.split(":")[1]);
									Vue.prototype.$u.vuex('vuex_openid', data.data
										.openid);
									resolve(true);
								}
								
							})
						})
					} else {
						console.log(res)
					}
				}
			})
		} else {
			// 拒绝授权
			if (detail.errMsg == 'getPhoneNumber:fail user deny' || detail.errMsg ==
				'getPhoneNumber:fail:user deny') {
				Vue.prototype.$u.toast('授权登录后才能体验完整的功能哦', 2500);
			} else if (detail.errMsg == 'getPhoneNumber:fail no permission') {
				Vue.prototype.$u.toast('该小程序暂无权限获取用户的手机号!', 2500);
			}
			resolve(false);
		}
	})
},

 

点击登录按钮将会调起手机号授权框,点击手机号确认登录将会调用组件

调用成功之后,组件会给你发一个 手机号授权的Phonecode手机号授权的凭证

接下来会调用uni.login(),在success的回调函数里面返回res.code,这个是登录凭证

 

再然后调用uni.getUserInfo()在回调函数里面得到encryptedData、iv

Vue.prototype.$u.api.wxLogin({
                                encryptedData: response[1].encryptedData,
                                iv: response[1].iv,
                                loginCode: res.code,

                                phoneCode: PhoneCode
                            })

调用我的api将需要的信息传给后端,我的后端就可以拿到用户手机号码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值