- 需求的场景描述(希望解决的问题)
需求:希望点击一个button得到用户授权后隐藏Button显示用户头像
问题:如果用户点击Button后但又拒绝用户授权之后,因为bindgetuserinfo绑定的函数默认已经成功授权,将只会隐藏button但不显示用户头像
- 希望提供的能力
希望getuserinfo函数提供wx.getUserInfo接口的全部功能,包括拒绝授权等功能
----------------------------------------------------------------------------------------
已用代码解决需求,谢谢
执行bindgetuserinfo时,如果没有授权,此时e.detail.errMsg会有fail的信息。没有授权的情况需要自己去做处理了。
是,我看了以下detail成功时和失败时的,用不同的地方做条件再处理
直接加一句这个,拒绝以后就不会消失了
你这个和最初始化小程序的时候那个效果差不多,就是给按钮,然后wxml 中使用了判断 .而你要的拒绝后再次授权那个 ,可以使用官方的
<button open-type="getUserInfo" bindgetuserinfo="userInfoHandler"> Click me 唤起用户授权 </button>
这样来唤起用户授权(用户已经授权不会再次唤起授权窗口) ,授权设置页面也可以用判断让他自己开启
<button open-type="openSetting" bindopensetting="callback">打开设置页</button>,
如果我没理解错,应该是这样,理解错了.请指出,萌新路过..
用户都拒绝授权了,你怎么获取的用户信息?
我希望用户成功授权后按钮消失显示用户头像和昵称,用户拒绝授权后按钮存在用户点击可再次进行授权,而这个绑定的函数并非像wx.getUserInfo接口有success和fail,而是直接显示detail,只能用detail判断是success还是fail,我认为提供wx.getUserInfo相同的功能使得客户端代码更简单,即用success和fail获取detail而不是用detail判断success还是fail
你可以直接判断数据库中是否存在数据,如果存在就显示用户信息,不存在就显示授权按钮
如果用户之前同意授权用户信息后插入到自己的数据库中,但是如果用户手动关闭授权后,虽然能够在主页面显示当前用户信息,但是用户信息以后就不会更新了,只能是第一次同意授权时的信息,所以还是要有接口
授权的
getUserInfo:
function
(e) {
if
(e.detail.userInfo) {
app.globalData.userInfo = e.detail.userInfo
this
.setData({
userInfo: e.detail.userInfo,
hasUserInfo:
true
})
}
}
我用这段代码解决了,如果用户拒绝授权,detail中userInfo为空,如果同意userInfo不为空,则得到userInfo和将决定按钮是否显示的hasUserInfo置真
有回调的bindgetuserinfo = 'getinfo'
getinfo(e){
}
这个函数返回的直接是getUserInfo接口的detail,所以需要用detail中的信息userInfo是否不为空来判断是否用户授权,而并不是像getUserInfo接口返回的是success和fail直接判断