小程序手机号授权登录-uniapp实现
<checkboxv-model="agreePrivacy" /><text @click="showPrivacy"class="link">《隐私协议》</text>
<buttonopen-type="getPhoneNumber"@getphonenumber="getPhoneNumber"type="primary"class="login-btn":disabled="!agreePrivacy">手机号授权登录</button>
// 显示隐私协议showPrivacy() {uni.navigateTo({url: '/pages/agreement/privacy'});},
// 获取手机号getPhoneNumber(e) {console.log('获取手机号回调', e);if (e.detail.errMsg === 'getPhoneNumber:ok') {// 授权成功,获取codeconst code = e.detail.code;// 发送code到后端解析手机号this.sendCodeToServer(code);} else {// 用户拒绝授权this.handleReject();}},// 处理用户拒绝授权handleReject() {uni.showModal({title: '授权提示',content: '获取手机号可以为您提供更便捷的服务,是否重新授权?',success: (res) => {if (res.confirm) {// 引导用户去设置页面开启权限this.openSetting();}}});},// 打开设置页面openSetting() {uni.openSetting({success: (res) => {console.log('设置页面操作结果', res.authSetting);}});},// 发送code到后端解析手机号sendCodeToServer(code) {uni.showLoading({ title: '登录中...' });// 调用后端接口,使用code换取手机号并登录uni.request({url: 'https://your-server.com/api/login/phone',method: 'POST',data: { code },success: (res) => {uni.hideLoading();if (res.data.success) {// 登录成功,存储用户信息uni.setStorageSync('userInfo', res.data.userInfo);uni.setStorageSync('token', res.data.token);// 跳转到首页uni.switchTab({url: '/pages/index/index'});} else {uni.showToast({title: res.data.message || '登录失败',icon: 'none'});}},fail: (err) => {uni.hideLoading();console.log('登录失败', err);uni.showToast({title: '网络错误,请稍后重试',icon: 'none'});}});},
隐私协议应该包含以下内容:
1. 明确告知用户需要获取手机号
2. 说明获取手机号的用途
3. 承诺保护用户隐私
4. 告知用户如何管理个人信息
5. 提供用户反馈渠道
夜雨聆风