uniapp手机号一键登录,先写个button
javascript
<button class="phone" open-type="getPhoneNumber" @getphonenumber="getPhoneNumber">手机号一键登录</button>
先在onload钩子获取临时code码
javascript
onLoad() {
uni.login({
provider: 'weixin',
success: (res) => {
console.log(res.code);
this.code = res.code
},
})
},
我这里是封装了一下,因为有两个页面用到
javascript
Vue.prototype.getBindPhone = function(encryptedData,iv,code,fn) {
postRequert(url + '/user/getBindPhone', {
encryptedData: encryptedData,
iv: iv,
code: code
}, (res) => {
console.log(res.data.data);
if (res.data.code == 200) {
let result = res.data.data
this.$store.state.openId = result.openId
this.userPhone = result.userPhone
if (fn) {
fn();
}
}
})
}
e.detail.encryptedData,e.detail.iv,还有临时code就是我们要传的参数,获取到是用户手机号和openId,调支付接口的时候需要用到,所以存一下
javascript
getPhoneNumber(e) {
if (!this.checked) {
Toast.fail('请先阅读并勾选服务条款');
return
}
this.getBindPhone(
e.detail.encryptedData,
e.detail.iv,
this.code,()=>{
this.userLogin(this.userPhone,this.$store.state.openId,()=>{
uni.redirectTo({
url: '/pages/home/home'
});
})
})
},