微信小程序 getUserProfile 获取用户信息 iv encryptedData 参数

Posted 早起的年轻人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信小程序 getUserProfile 获取用户信息 iv encryptedData 参数相关的知识,希望对你有一定的参考价值。

人生七十古来稀,十年少小,十年老弱,还有五十年,五十年再分成日夜,只有二十五年的风景,再加上刮风下雨,三灾六病,人这一辈子,所剩时间不多,不如好好写写代码

效果

1 wxml 中定义的按钮

<button  bindtap="toLogin"  
			lang="zh_CN" open-type='getUserInfo'>立即登录
</button>

2 对应的 js 中调用 结合 login 方法获取 code

我这里是在 进入页面时获取了 code

    getWxCode() 
        let that = this;
        wx.login(
            success: function (data) 
                console.log(" wx.login ---success ")
                that.setData(
                    wxCode: data.code
                );
            
        )
    ,

然后在调用登录方法时直接使用的这个code

   toLogin(e) 
       this.getUserInfoFunction(e,this.data.wxCode);
   ,
调用 getUserProfile 方法来获取微信的用户消息
getUserInfoFunction(e,code)
        //获取微信用户信息
        wx.getUserProfile(
            desc: '用于完善资料', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
            success: (res) => 
                //保存微信用户信息
                wx.setStorageSync('user_info', res.userInfo)
                let avatarUrl = res.userInfo.avatarUrl;
                let nickName = res.userInfo.nickName;
                let province = res.userInfo.province;
                let country = res.userInfo.country;
                let gender = res.userInfo.gender;
                
                let iv = res.iv;
                let encryptedData = res.encryptedData;
                let wxCode = code;
                
                //在这里去调用 后台接口
                //后台接口会根据 iv encryptedData  wxCode 
                //来获取 openID 以及获取用户的基本信息

            ,
            fail: (err) => 
                console.log('err', err);
            
        );
    ,

调用 api.weixin.qq.com 接口来获取用户的 openId

我这里是在 微信中调用的此api 接口,为了给大家演示效果,实际业务开发中,微信小程序中不可以调用此接口。

在你的 java 服务接口 或者 php 服务接口中调用 此 api 即可获取到 openId

    let appid = "";
    let secret = "";
    let wxCode ="";
    wx.request(
        url: "https://api.weixin.qq.com/sns/jscode2session?appid=" + appid + "&secret=" + secret + "&js_code=" + wxCode + "&grant_type=authorization_code",
        success: (res) => 
            console.log(res);
            let session_key = res.data.session_key;
            let openid = res.data.openid;
    )

3 第一次登录出现解密失败 第二次登录就可以了

引起的这个错误一般是 错误的流程:引导用户点击授权按钮(getUserProfile)=>调起授权(wx.getUserProfile)=>获取code(wx.login)=>请求后端、传输数据(code、iv等)=>后端解密并登陆。

正确的流程(本文所述)正确的流程:获取code(wx.show)=>引导用户点击授权按钮(getUserProfile)=>调起授权(wx.getUserProfile)=>请求后端、传输数据(code、iv等)=>后端解密并登陆。


完毕

以上是关于微信小程序 getUserProfile 获取用户信息 iv encryptedData 参数的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序 getUserProfile 获取用户信息 iv encryptedData 参数

微信小程序 getUserProfile 获取用户信息 iv encryptedData 参数

uniapp在微信小程序获取用户信息和openId

uniapp如何更新微信小程序登录接口

微信小程序getUserProfile详解,CRMEB系统修复流程

记录一次微信小程序getUserProfile的踩坑经历