
微信小程序对于用户信息获取进行了接口调整。调用 wxgetUserInfo(Object object) 不会再由d窗授权提示。在已授权时,可以直接获取用户信息;否则则直接进入 fail 回调函数。
用户的授权状态可以用 wxgetSetting() 接口的请求的结果
resauthSetting['scopeuserInfo'] 来判断。
那么在接口调整后,再进行授权登录则需要通过 open-data 来实现。
注:如果用户微信版本不支持open-data,需要提示用户升级。这次接口的调整实际上使得按一次d窗中的授权按钮即可授权的 *** 作变成了需要按两次,并且需要额外设计授权页面或者在主页先进行一次d窗引导用户授权。实际上更加繁琐。
一个很常用的功能,但是我还是发现有一些需要注意的地方在里面,简单记录一下。
第一个问题就是这个 button 组件需要添加 open-type 属性,并指定为 getUserInfo 类型,来获取用户基本信息。还有另外一种做法,具体可以参考 官方文档的说明 。
放一个动图哈哈哈
js 部分就是响应点击事件,使用 api wxgetUserInfo(Object object)
获取用户信息,注意传递给 wxgetUserInfo 的是一个字典其中包含了两个函数分别作为成功和失败的回调函数(callback function)
注意 this 的指代对象发生了变化,最开始的this是指代 Page() 构造出来的对象,在函数里面使用 this 会说未指定,所以我们使用了 that 承接一下,这也算传统艺能咯。
另外一点:获取用户信息时会自动d出一个对话框问用户是否提供信息,这个d窗只d出一次,如果用户点击了拒绝后来又想改为允许,可以使用 wxopenSetting({})
除了可以获取用户的昵称之外还有很多信息可以得到,还有一个比较常用的就是用户头像了也就是 resuserInfoavatarUrl 。
1用户点击微信授权,小程序端获取手机号。
2小程序端将手机号和code传给后台,
3后台通过code获取openid
如果openid已经存在,返回用户信息
如果openid不存在,并且该手机号未和openid绑定,那么该openid和手机号均可用户登录,返回用户信息
如果openid不存在,并且该手机号已经和某个openid绑定了,那么返回错误信息
补充:
前端传给后台code,后台通过小程序的一个方法(使用code,小程序appid和secret)从微信获取唯一标识openid(或unionid)
1前端传给后台code,后台(使用code,小程序appid和secret获取)从微信获取唯一标识openid(或unionid)
2如果后台存在该openid用户,返回登录成功的参数
如果不存在该openid用户,返给前端openid和一个失败的标识
3前端界面跳转,变成输入手机号和验证码界面。
如果手机号存在,登录成功,返回参数。并且如果没有绑定微信,那么绑定openid
如果手机号不存在,那么注册该手机号为用户,并且绑定openid
或者第三步骤为:
3前端将openid和手机号+密码给后台
如果登录成功,返回登录成功参数,并且如果没有绑定微信,那么绑定微信
如果用户(手机号)存在,密码错误,提示密码错误
如果用户(手机号)不存在,那么注册该密码为登录密码
1小程序js端调用框架登陆API,获取到一个临时code,拿着这个code去调用自己的服务端接口
2在自己的服务器端,使用app_id app_secrect code可以获取到用户的openid,这个id是用户唯一的id并且不
3获取用户信息很简单,并且不需要自己的服务器处理,只需要小程序端提供的API。前端页面
4这个时候就可以把该用户的openid 和 昵称,头像,一块调用自己服务端接口,保存到数据
<view @click=getUserInfo">获取微信信息</view>
// 获取用户信息
getUserInfo() {
if(thisisShow){//防止多次点击
thisisShow = false
unigetUserProfile ({
desc: "获取个人信息",
success: (res) => {
thisuserInfo = resuserInfo
thisisShow = true
},
fail: getUserProfileFail => {
thisisShow = true
unishowToast({
title: '授权失败',
mask: false,
duration: 1000,
icon: 'none',
})
}
})
}
},
<button type="default" open-type="getPhoneNumber" @getphonenumber="ongetPhoneNumber">授权获取手机号登录</button>
// 获取手机号码
ongetPhoneNumber(e) {
if (edetailerrMsg == "getPhoneNumber:fail user deny") { //用户拒绝授权
//拒绝授权后d出一些提示
unishowToast({
title: '拒绝授权',
mask: false,
duration: 1000,
icon: 'none',
})
} else { //允许授权
apppostData('url',{
key: appglobalDatasession_key,
encryptedData: edetailencryptedData,
iv: edetailiv
})then(res=>{
consolelog("获取手机号码",res)
thismobile = resdataphoneNumber
unisetStorageSync('xmfTel',resdataphoneNumber)
})catch(err=>{
consolelog(err)
})
}
},
微信小程序button api
>
以上就是关于微信小程序用户信息获取接口的调整全部的内容,包括:微信小程序用户信息获取接口的调整、微信小程序获取当前用户信息、小程序微信登录等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)