uniapp实现微信手机号码登录注册注销(bug踩坑)
uni-app 实现微信手机号码登录注册注销
在 uni-app 中实现微信手机号码登录注册注销功能是一个常见需求。下面是详细的步骤和解决方法。
第一步:处理 code onload 就开始 un.login 方法通过 code 调用后台接口首先,我们需要在页面加载完成后,调用 `uni.login` 方法获取微信授权,并传递给后台接口设置 token。
```javascript// pages/login.jsPage({
onLoad: function(options) {
// 获取code uni.login({
provider: 'weixin',
success: function(res) {
console.log('code:', res.code);
// 调用后台接口设置token this.setToken(res.code);
}.bind(this),
fail: function(err) {
console.error('login failed:', err);
}
});
},
setToken(code) {
// 后台接口设置token uni.request({
url: ' method: 'POST',
data: { code },
success: function(res) {
console.log('set token success:', res);
},
fail: function(err) {
console.error('set token failed:', err);
}
});
}
});
```
第二步:处理成需要的 phone在上一步中,我们获取了微信授权 code,并传递给后台接口设置 token。现在,我们需要将 code 转换为手机号码。
```javascript// pages/login.jsPage({
onLoad: function(options) {
// 获取code uni.login({
provider: 'weixin',
success: function(res) {
console.log('code:', res.code);
// 调用后台接口设置token this.setToken(res.code);
// 转换成手机号码 this.convertPhone(res.code);
}.bind(this),
fail: function(err) {
console.error('login failed:', err);
}
});
},
convertPhone(code) {
// 后台接口转换成手机号码 uni.request({
url: ' method: 'POST',
data: { code },
success: function(res) {
console.log('convert phone success:', res);
// 注册或登录 this.registerOrLogin(res.data.phone);
}.bind(this),
fail: function(err) {
console.error('convert phone failed:', err);
}
});
},
registerOrLogin(phone) {
// 根据需要注册或登录 if (this.isRegister()) {
// 注册 this.register(phone);
} else {
// 登录 this.login(phone);
}
},
isRegister() {
// 判断是否是注册页面 return uni.getStorageSync('is_register') === 'true';
},
register(phone) {
// 后台接口注册 uni.request({
url: ' method: 'POST',
data: { phone },
success: function(res) {
console.log('register success:', res);
// 注册成功后跳转到登录页面 this.login(phone);
}.bind(this),
fail: function(err) {
console.error('register failed:', err);
}
});
},
login(phone) {
// 后台接口登录 uni.request({
url: ' method: 'POST',
data: { phone },
success: function(res) {
console.log('login success:', res);
// 登录成功后跳转到首页 uni.redirectTo({ url: '/pages/index' });
}.bind(this),
fail: function(err) {
console.error('login failed:', err);
}
});
}
});
```
第三步:处理注销在上一步中,我们实现了注册和登录功能。现在,我们需要添加注销功能。
```javascript// pages/login.jsPage({
onLoad: function(options) {
// 获取code uni.login({
provider: 'weixin',
success: function(res) {
console.log('code:', res.code);
// 调用后台接口设置token this.setToken(res.code);
// 转换成手机号码 this.convertPhone(res.code);
}.bind(this),
fail: function(err) {
console.error('login failed:', err);
}
});
},
logout() {
// 后台接口注销 uni.request({
url: ' method: 'POST',
success: function(res) {
console.log('logout success:', res);
// 注销成功后跳转到登录页面 this.login('');
}.bind(this),
fail: function(err) {
console.error('logout failed:', err);
}
});
}
});
```
总结在本文中,我们实现了uni-app中的微信手机号码登录注册注销功能。通过code和解析phone分开处理,解决了bug踩坑的问题。