uni-app小程序登录功能需要提供可取消或拒绝的选项按钮,uni.getUserInfo这个可以用来解决么
uni-app小程序登录功能需要提供可取消或拒绝的选项按钮,uni.getUserInfo这个可以用来解决么
小程序审核的时候被拒绝,说小程序登录功能暂未符合规范要求,在登录环节,应当为用户提供可取消或拒绝的选项按钮,
后来我用改成加入 uni.getUserInfo
, 获取权限之后再 login
uni.getUserInfo({
desc:'获取微信用户的昵称',
provider: 'weixin',
success(res) {
uni.login({
provider: 'weixin',
.........
},
fail: () => {
uni.showToast({
title: '授权已取消',
icon: 'error',
mask: true
})
},
complete(res) {
console.log(res);
uni.hideLoading();
}
}
但是我测试的时候,发现点击按钮还是可以直接进入微信,就是不弹出授权的窗口。
后来我用了别人的手机来测,也不管用。
不知道为什么??
1 回复
在uni-app中实现小程序登录功能,并提供可取消或拒绝的选项按钮,uni.getUserInfo
并不能直接满足这一需求,因为 uni.getUserInfo
主要用于获取用户信息,并且在较新版本的微信小程序中,该方法已被废弃,取而代之的是使用 button
组件的 open-type="getUserInfo"
属性来引导用户授权。
为了实现登录功能并提供可取消或拒绝的选项,我们可以结合 button
组件和自定义模态框(弹窗)来实现。以下是一个示例代码,展示了如何实现这一功能:
<template>
<view>
<button open-type="getUserInfo" @getuserinfo="handleUserInfo" type="primary">微信用户一键登录</button>
<modal v-if="showModal" title="登录提示" @confirm="confirmLogin" @cancel="cancelLogin">
为了提供更好的服务,我们需要您授权微信信息,是否继续?
</modal>
</view>
</template>
<script>
export default {
data() {
return {
showModal: false,
userInfo: {}
};
},
methods: {
handleUserInfo(e) {
if (e.detail.userInfo) {
// 用户点击了允许授权按钮
this.userInfo = e.detail.userInfo;
// 显示模态框询问用户是否继续登录流程
this.showModal = true;
} else {
// 用户点击了拒绝按钮
console.log('用户拒绝了授权');
}
},
confirmLogin() {
// 用户点击了模态框的确定按钮,执行登录逻辑
this.showModal = false;
console.log('用户信息:', this.userInfo);
// 在这里调用登录接口,比如发送到后端服务器进行验证
// loginApi(this.userInfo).then(response => {
// // 登录成功处理
// }).catch(error => {
// // 登录失败处理
// });
},
cancelLogin() {
// 用户点击了模态框的取消按钮
this.showModal = false;
console.log('用户取消了登录');
}
}
};
</script>
<style scoped>
/* 样式可根据需要自定义 */
</style>
在这个示例中,当用户点击登录按钮时,会触发 handleUserInfo
方法。如果用户允许授权,会显示一个模态框询问用户是否继续登录流程。用户可以选择确定(继续登录)或取消(放弃登录)。这样,就实现了在登录过程中提供可取消或拒绝的选项按钮。
注意,实际开发中可能还需要处理登录接口的调用、错误处理、状态管理等细节。此外,为了提升用户体验,可以进一步优化样式和交互逻辑。