uni-app使用 getUserInfo 报错 fail can only be invoked by user TAP gesture 解决方法

uni-app使用 getUserProfile 报错 fail can only be invoked by user TAP gesture 解决方法:

官方文档 getUserInfo 和 getUserProfile 接口详情

在练习项目写微信登录获取微信用户信息时点击报错, 小程序弹窗也无法调用:

"fail can only be invoked by user TAP gesture"
失败只能由用户点击手势调用

获取用户信息error

获取用户信息失败时无法弹出微信获取信息弹窗时的原代码:

解决方式:

第一种 :

直接删除 open-type, 改成 @tap 事件 :

<button type="primary" size="default" class="login-btn" lang="zh_CN" @tap="loginByWeixin">
    <image src="/static/images/mine/wechat.png"></image>
    微信一键登录
</button> 
<script>
	export default {
		methods:{
		loginByWeixin() {
			uni.getUserProfile({
				desc: '获取用户信息',
				success: res => {
					console.log(res);
					let nickName = res.userInfo.nickName;
					let avatar = res.userInfo.avatarUrl;
					this.userInfo = res.userInfo;
				},
				fail: res => {
					console.log(res);
				}
			});
		}
		}
	}
</script>

第二种:

这个方法有点呆,是我尝试解决时用的办法,建议直接用第一种。

不删除 open-type,给自定义事件 @getuserinfo 加一个 uni.showModal()提示,确认后调用再调用getUserInfo 方法:

<!-- #ifdef MP-WEIXIN -->
<button type="primary" size="default"  class="login-btn" open-type="getUserInfo" lang="zh_CN" @getuserinfo="loginByWeixin">
 <image src="/static/images/mine/wechat.png"></image>
 微信一键登录
 </button>
<!-- #endif -->
<script>
	export default {
		methods:{
			loginByWeixin() {
			uni.showModal({
				title: '登录提示',
				content: '您需要授权微信登录后才能正常使用小程序功能',
				success(res) {
					//如果用户点击了确定按钮
					if (res.confirm) {
						uni.getUserProfile({
							desc: '获取你的昵称、头像、地区及性别',
							success: res => {
								console.log(res);
							},
							fail: res => {
								console.log(res)
							}
						});
					}
				}
			});
		},
		}
	}
</script>

效果如下:

效果

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

OooooYi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值