开发完小程序后,在五千位用户中出现三例获取不到openid的问题!?
发布于 6 年前 作者 ming31 4703 次浏览 来自 官方Issues

小程序端代码:

actions: {

        async onLaunch ({ commit, state }) {  //初始化后进行的一些异步操作

            const [getUserWeixinInfoErr, userWeixinInfo] = await uni.getUserInfo()  //首先获取用户微信信息

            if (getUserWeixinInfoErr) {  //获取用户微信信息失败后,提示用户,同时展示透明按钮

                uni.hideLoading()  //取消loading

                uni.$emit('MESSAGE', '获取用户信息失败,请点击屏幕。允许本应用获取您的头像和昵称等信息!', 3456)

                commit('SHOWGETUSERINFOBUTTON')

            } else {  //获取用户微信信息成功后,继续进行下一步

                commit('GETUSERWEIXININFO', userWeixinInfo.userInfo)  //将获取到的用户微信信息存在 store 里

                const [ , { code }] = await uni.login()  //获取 code,并将code 连同用户头像一同发给后台

                this.$ajax.get(`${api_onLaunch}?code=${code}&avatar=${state.userWeixinInfo.avatarUrl}`).then(([ , { data: res }]) => {
                    uni.hideLoading()  //异步操作结束,停止 loading

                    if (res.code === 200) {  //当前微信用户已经绑定手机号了

                        commit('GETUSERSERVERINFO', res.data)

                    } elseif(res.code === 300) {  //当前微信用户没有绑定手机号,弹出验证码框

                        commit('SHOWVERIFY')

                    }elseif(res.code === 401){

                       login()

                   }

                })
            }          
        }
    }

后端代码:

               $code = $request->code;

               $miniProgram = app('wechat.mini_program');

                $data = $miniProgram->auth->session($code);
                if (isset($data['errcode'])) {
                    return $this->error(401);
                }
                $user = User::where('openid', $data['openid'])->first();
                if (!$user) {
                    return $this->response()->array([
                        'code' => 300,
                        'message' => '没有绑定手机号'
                    ]);
                }




用户在绑定手机号后,再次登录小程序发现需要再次绑定,但是其openid是存在于数据库的。(ps:用户在别人的手机上登录他的微信号,可以正常访问)

回到顶部