小程序
小游戏
企业微信
微信支付
扫描小程序码分享
mac 模拟器1.05.2102010 基础库2.16.0
调用wx.login获取code后,再调用wx.getUserProfile,可能会失败,触发fail函数,error msg: ''getUserProfile:fail can only be invoked by user TAP gesture"。
如果不能同时使用,那如何校验用户信息的准确性或者解密encryptedData呢?
23 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
我的解决思路:
用户点击登录后,调用函数bindtap="getUserProfile"。
getUserProfile: function(e){
wx.login() //获取code
wx.getUserProfile( //获取授权信息
//success成功后执行以下操作:
//先弹出一个wx.showToast,延迟时间duration为2秒,目的让用户看到程序正在执行,提高用户体验
//设置一个定时3秒后执行submitLogin()函数:setTimeout(submitLogin(), 3000),目的是使得wx.login()执行完毕生成code
)
},
submitLogin(){ // 赋值code + 授权信息,然后提交
wx.request() 提交api
}
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
async getUserProfile(e){ let login = () => { return new Promise( resolve =>{ wx.login( { success(res) { console.log("执行异步操作--------") resolve(res) } }) }); } let getUserInfo = () => { return new Promise(resolve => { //wx.getUserInfo({ wx.getUserProfile({ desc: '用于完善会员资料', success(res) { console.log("000000000") resolve(res) } }) }) } Promise.all([login, getUserInfo]).then((res) => { console.log(res) console.log ("-------------------") }).catch((err) => { console.log(err) }) }
我这代码不知有什么问题,执行后感觉两个promise并没有执行,res的返回的数组里是两个函数,我很困惑
后端如果有用Binary Wang的工具包的话,需要注意
#我当前使用weixin-java-miniapp工具包版本为3.9.0 # 用code换SessionKey WxMaJscode2SessionResult jsCode2SessionDTO = wxMaService.jsCode2SessionInfo(code); # 解析获取用户信息 WxMaUserInfo maUserInfoDTO = wxMaService.getUserService().getUserInfo(jsCode2SessionDTO.getSessionKey(), encryptedData, iv);
WxMaUserInfo对象中不存在openId了,要用WxMaJscode2SessionResult中的openid和unionId
我遇到的问题是code和参数传过去啦就解析不成功
我发现反过来调用,先执行getUserProfile再login,也能顺利解码加密内容,是不是微信在这个新api(getUserProfile)上做了兼容???
已授权条件下的自动登录是不是实现不了了
我也是在调整登录方案时,发现了这个问题
有发现什么好的方案吗
我是点击授权按钮的时候 先wx.login 再wx.getUserProfile 这俩先后顺序 平级
碰到同样问题,先wx.getUserProfile在成功回调里用wx.login,请求后台接口会报错。希望官方给出合适的解决方案。
遇到同样的问题,若楼主有解决方法请告知
正在加载...
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
我的解决思路:
用户点击登录后,调用函数bindtap="getUserProfile"。
getUserProfile: function(e){
wx.login() //获取code
wx.getUserProfile( //获取授权信息
//success成功后执行以下操作:
//先弹出一个wx.showToast,延迟时间duration为2秒,目的让用户看到程序正在执行,提高用户体验
//设置一个定时3秒后执行submitLogin()函数:setTimeout(submitLogin(), 3000),目的是使得wx.login()执行完毕生成code
)
},
submitLogin(){ // 赋值code + 授权信息,然后提交
wx.request() 提交api
}
async getUserProfile(e){ let login = () => { return new Promise( resolve =>{ wx.login( { success(res) { console.log("执行异步操作--------") resolve(res) } }) }); } let getUserInfo = () => { return new Promise(resolve => { //wx.getUserInfo({ wx.getUserProfile({ desc: '用于完善会员资料', success(res) { console.log("000000000") resolve(res) } }) }) } Promise.all([login, getUserInfo]).then((res) => { console.log(res) console.log ("-------------------") }).catch((err) => { console.log(err) }) }
我这代码不知有什么问题,执行后感觉两个promise并没有执行,res的返回的数组里是两个函数,我很困惑
后端如果有用Binary Wang的工具包的话,需要注意
#我当前使用weixin-java-miniapp工具包版本为3.9.0 # 用code换SessionKey WxMaJscode2SessionResult jsCode2SessionDTO = wxMaService.jsCode2SessionInfo(code); # 解析获取用户信息 WxMaUserInfo maUserInfoDTO = wxMaService.getUserService().getUserInfo(jsCode2SessionDTO.getSessionKey(), encryptedData, iv);
WxMaUserInfo对象中不存在openId了,要用WxMaJscode2SessionResult中的openid和unionId
我遇到的问题是code和参数传过去啦就解析不成功
我发现反过来调用,先执行getUserProfile再login,也能顺利解码加密内容,是不是微信在这个新api(getUserProfile)上做了兼容???
已授权条件下的自动登录是不是实现不了了
我也是在调整登录方案时,发现了这个问题
有发现什么好的方案吗
我是点击授权按钮的时候 先wx.login 再wx.getUserProfile 这俩先后顺序 平级
碰到同样问题,先wx.getUserProfile在成功回调里用wx.login,请求后台接口会报错。希望官方给出合适的解决方案。
遇到同样的问题,若楼主有解决方法请告知