小程序
小游戏
企业微信
微信支付
扫描小程序码分享
使用接口 wx.checkSession校验 session_key 是否有效,验证通过 但是也会出现解码失败
5 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
我现在是在onload里面调用的wx.login 然后获取到code存入缓存,,然后点击头像 获取用户信息,调接口传参code给后台 后台返回我openid跟session_key。还是经常 后台返回失败,一直不知道什么原因。把数据清空了,重新登录 有时候成功,有时候也失败,要么 就是登录久了没操作, 有时候就失败重新登录一次也不行。
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
同样遇到这个问题,提供一个简单的例子
<template> <view class="content"> <image class="logo" src="/static/logo.png"></image> <view class="text-area"> <text class="title">{{title}}</text> </view> <button type="default" open-type="getUserInfo" @getuserinfo="getUserInfo">获取用户信息</button> <view style="margin: 30rpx;padding: 30rpx;width: 100vw;background-color: #eee;">{{JSON.stringify(info)}}</view> </view> </template> <script> export default { data() { return { title: 'Hello', code:"", info:{} } }, async onLoad() { await this.getJsCode() }, methods: { async getJsCode(){ this.code = await wx.login().then(res=>{ console.log(res) if(res.errMsg=='login:ok'){ return res.code } return "" }) }, async getUserInfo(e){ console.log(e) let vm = this let {encryptedData,iv} = e.detail||{} uni.checkSession({ success() { vm.loginAPI({encryptedData,iv}) }, async fail() { await vm.getJsCode() vm.loginAPI({encryptedData,iv}) } }) }, loginAPI({encryptedData,iv}){ let vm = this return uni.request({ url:"http://127.0.0.1:8080/api/v1/wechat-mini/login?js_code="+this.code, data:{encryptedData,iv}, method:"POST", header:{ "content-type":"application/json" } }).then(([err,res])=>{ console.log(err,res) if(res){ vm.info = res.data.data }else{ vm.info = {} } }).finally(async()=>{ await vm.getJsCode() }) } } } </script> <style> .content { display: flex; flex-direction: column; align-items: center; justify-content: center; } .logo { height: 200rpx; width: 200rpx; margin-top: 200rpx; margin-left: auto; margin-right: auto; margin-bottom: 50rpx; } .text-area { display: flex; justify-content: center; } .title { font-size: 36rpx; color: #8f8f94; } </style>
楼主解决了吗
楼主解决了吗 我这也出现这种情况
确认下获取手机号之后有没有调用过wx.login(),如果调用有可能会刷新session_key
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
我现在是在onload里面调用的wx.login 然后获取到code存入缓存,,然后点击头像 获取用户信息,调接口传参code给后台 后台返回我openid跟session_key。还是经常 后台返回失败,一直不知道什么原因。把数据清空了,重新登录 有时候成功,有时候也失败,要么 就是登录久了没操作, 有时候就失败重新登录一次也不行。
同样遇到这个问题,提供一个简单的例子
<template> <view class="content"> <image class="logo" src="/static/logo.png"></image> <view class="text-area"> <text class="title">{{title}}</text> </view> <button type="default" open-type="getUserInfo" @getuserinfo="getUserInfo">获取用户信息</button> <view style="margin: 30rpx;padding: 30rpx;width: 100vw;background-color: #eee;">{{JSON.stringify(info)}}</view> </view> </template> <script> export default { data() { return { title: 'Hello', code:"", info:{} } }, async onLoad() { await this.getJsCode() }, methods: { async getJsCode(){ this.code = await wx.login().then(res=>{ console.log(res) if(res.errMsg=='login:ok'){ return res.code } return "" }) }, async getUserInfo(e){ console.log(e) let vm = this let {encryptedData,iv} = e.detail||{} uni.checkSession({ success() { vm.loginAPI({encryptedData,iv}) }, async fail() { await vm.getJsCode() vm.loginAPI({encryptedData,iv}) } }) }, loginAPI({encryptedData,iv}){ let vm = this return uni.request({ url:"http://127.0.0.1:8080/api/v1/wechat-mini/login?js_code="+this.code, data:{encryptedData,iv}, method:"POST", header:{ "content-type":"application/json" } }).then(([err,res])=>{ console.log(err,res) if(res){ vm.info = res.data.data }else{ vm.info = {} } }).finally(async()=>{ await vm.getJsCode() }) } } } </script> <style> .content { display: flex; flex-direction: column; align-items: center; justify-content: center; } .logo { height: 200rpx; width: 200rpx; margin-top: 200rpx; margin-left: auto; margin-right: auto; margin-bottom: 50rpx; } .text-area { display: flex; justify-content: center; } .title { font-size: 36rpx; color: #8f8f94; } </style>
楼主解决了吗
楼主解决了吗 我这也出现这种情况
确认下获取手机号之后有没有调用过wx.login(),如果调用有可能会刷新session_key