uni-app实现小程序一键登录,以及在此遇到的问题

uni-app实现一键登录思路如下:

1、通过 button 标签获取用户信息(设置button的open-type为getPhoneNumber,并通过@getphonenumber回调获取到信息)

2、调用 uni.login 方法,获取到 code

3、拿着获取到的 code 和用户信息请求后端接口

其实现代码如下:

html代码

<button class="button-div" type="primary" open-type="getPhoneNumber" @getphonenumber="getUserInfo">
		微信用户一键登录
<button>

js代码

/**
* 获取到手机号的回调
*/
getUserInfo(e) {
    if (e && e.detail.errMsg === 'getPhoneNumber:ok') {
		uni.showLoading({
			mask: true,
			title: '加载中'
		});
		let self = this;
		uni.login({
			provider: 'weixin',
			success: result => {
			    if (result && result.code) {
                    // 此时获取到了用户信息和code,使用这些信息去调用后端接口实现自身逻辑
			        self.authorizeInfo(self.phoneNumberInfo.detail, result.code);
			    }
			},
			fail: result => {
				console.log(result)
			}
		});
	}
},

写完以上代码,登录的逻辑就实现了,但是在测试过程中却发现每次登录都要点击两次按钮才能成功,后端反馈是encryptedData解密失败导致的,解决方法:

在调用getUserInfo()之前先调用一次uni.login方法

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值