uni APP 微信小程序获取授权的微信信息

摘要:
根据微信小程序开发文档,获取用户信息有三个接口:wx。getUserInfo和wx.getUserProfile。UserInfo旧时不使用。wx。2.3.1版之后支持getUserInfo基本库,但用户必须授权scope.userInfo。wx。getUserProfile基本库2.10.4开始支持获取用户信息。该页面生成单击事件(如绑定按钮)

根据微信小程序开发文档,获取用户信息的接口有3个UserInfo,wx.getUserInfo,wx.getUserProfile。

UserInfo比较老就不用了。wx.getUserInfo基础库版本 2.3.1 以后支持,但是必须用户授权 scope.userInfo。

wx.getUserProfile 基础库 2.10.4 开始支持,获取用户信息。页面产生点击事件(例如 button 上 bindtap 的回调中)后才可调用,每次请求都会弹出授权窗口,用户同意后返回 userInfo。该接口用于替换 wx.getUserInfo。

                        //用户授权
                        wx.authorize({
                            scope: 'scope.userInfo',
                            success(res) {
                                wx.startRecord();
                            }
                        });

//查看微信小程序接口是否可用

console.log('wx.getUserProfile', wx.canIUse('getUserProfile'))

wx.getUserInfo获取用户信息

                       // 获取微信用户信息
                        wx.getUserInfo({
                            success: function(res) {
                                //用户信息
                                const userInfo = res.userInfo;
                                //性别 0:未知、1:男、2:女
                                const {
                                    nickName,
                                    avatarUrl,
                                    gender,
                                    province,
                                    city,
                                    country
                                } = userInfo;
                                console.log(res)
                                let userUrl = userInfo.avatarUrl;//微信头像
                                let wxname = userInfo.nickName;//微信昵称
                            },
                            fail: res => {
                                // 获取失败的去引导用户授权
                                uni.showToast({
                                    title: '您需要授权,才能获取您的信息!'
                                });
                            }
                        });

wx.getUserProfile 获取用户信息,获取openid,思路如下wx.login获取code,然后调微信服务端接口

'https://api.weixin.qq.com/sns/jscode2session?appid=' + appId + '&secret=' + APP_SECRET + '&js_code=' +
                                code + '&grant_type=authorization_code'
就能得到openid和sessionKey。
WXBizDataCrypt是官网js提供的解密用户信息的。通过上述接口就能获取sessionKey,然后可以解密微信用户加密的信息。
                

        wx.login({
          success: function(data) {

          let code=data.code;
         //登录微信授权
                wx.getUserProfile({
                    desc: '用于完善用户资料',
                    lang: 'zh_CN',
                    success: function(res) {
                        console.log('wx.getUserProfile=>用户允许了授权');
                        console.log(res.userInfo);
                        // console.log( res.rawData );  
                        console.log(res.signature);
                        console.log(res.encryptedData);
                        console.log(res.iv);
                        that.userUrl = res.userInfo.avatarUrl;
                        that.wxname = res.userInfo.nickName;
                                                
                        
                        var sessionKey = '';
                        var ed = res.encryptedData;
                        var eiv = res.iv;
                        var appId = ''; //AppID(小程序ID)
                        var APP_SECRET = ''; //AppSecret(小程序密钥)
                        wx.request({
                            //获取openid接口
                            url: 'https://api.weixin.qq.com/sns/jscode2session?appid=' + appId + '&secret=' + APP_SECRET + '&js_code=' +
                                code + '&grant_type=authorization_code',
                            data: {},
                            method: 'GET',
                            success: function(res) {
                                console.log(res.data)
                                that.userId = res.data.openid; //获取到的openid 
                                uni.setStorage({
                                    key: "lsopenid",
                                    data: res.data.openid
                                })
                                sessionKey = res.data.session_key; //获取到session_key
                                //that.getPhoneNumber(res);//得到res.encryptedData后,需要解码才能得到openId
                                var pc = new WXBizDataCrypt(appId, res.data.session_key);
                                console.log(pc)
                                var data = pc.decryptData(ed,eiv);
                                console.log(data)
                            }
                        });
                          
                        小程序端wx.getUserProfile()获取到userInfo,wx.login()获取到code,  
                        这两个传给后端,code通过code2session接口获取到unionid,openid,session_key等;  
                        原有的拿session_key解密encryptedData的逻辑不需要了,毕竟encryptedData也只是比userInfo多了openid和unionid。  
                        */

                    },
                    fail: function(res) {
                        console.log('wx.getUserProfile=>用户拒绝了授权');
                        console.log(res);

                    },
                });
        }});
 

  

免责声明:文章转载自《uni APP 微信小程序获取授权的微信信息》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇DELPHI字符串、数组操作函数(转)js设置自动刷新下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

由微博图床挂掉之后想到的

前不久,微博图床挂了,这对于众多使用 Markdown 写技术博客的人简直太残忍了!看来,图片迁移真的是刻不容缓了,在我准备迁移图片的时候,发现了几个平台对图片不同的处理方式,觉得很有意思,所以记录一下。 一、背景知识介绍 1、Markdown 和图床 (1)Markdown Markdown 是一种标记语言,通过简单的标注,可以使文本具有一定格式。例如在...

微信开放平台开发——网页微信扫码登录(OAuth2.0)

1、OAuth2.0 OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。 允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据。每一个令牌授权一个特定的网站(例如,视频编辑网站)在特定的时段(例如,接下来的2小时内)内...

完整版QQ(腾讯)开放平台操作指南(包含:qq登录能力获取等等)

之前我和大家提过,我要购买第三方的APP服务,就相当于有自己的APP了,现在APP对接上线之前需要做大量的准备工作,在此把步骤分享给大家,这样可以节省大家很多时间。 完整版QQ(腾讯)开放平台操作指南(包含:账号注册,移动应用申请,qq登录能力获取,上传更新安装包) 前期资料填写阶段需完成 一、进入应用宝开发者平台(地址:http://open.qq.co...

企业微信的数据打通

前言 当企业使用企业微信营销时,会添加企业的相关公众号、微信小程序等应用,因此企业可以获取客户的unionid,做到数据打通。从而知道客户在企业的公众号、微信小程序中进行了哪些行为,进而可以了解用户的需求,给客户进行精准营销。那么企业是如何获取用户的unionid的呢? 一、如何理解unionid? 我们把每个接入微信的应用(公众号、APP)比作一个独立的...

微信小程序wx.request请求服务器json数据并渲染到页面

【原文出自】: https://blog.csdn.net/weixin_39927850/article/details/79766259 微信小程序的数据总不能写死吧,肯定是要结合数据库来做数据更新,而小程序数据主要是json数据格式,所以我们可以利用php操作数据库,把数据以json格式数据输出即可。现在给大家讲一下,微信小程序的wx.request...

【微信】新闻推送步骤

微信公众平台主页 准备群发素材 这里演示多图文消息情况—— 群发消息 在素材中找之前编辑好的内容 补充:微社区后台设置 进入微社区后点击【话题管理】-【发新话题】,然后进行复制粘贴即可(注意:图片需要下载后上传到微社区里,无法粘贴) 记得把标签改为【七院动态】 编辑好后提取网页链接 补充:编辑器用法略讲 所有编辑器基本都差不多,...