先直接看代码:
import wd from '../../../webui/lib/wd.js' const app = getApp() Page({ /** * 页面的初始数据 */ data: { unionId1: '', //从wx.getUserInfo获取 unionId2: '', //从code2session获取 } //<button open-type="getUserInfo" bindgetuserinfo="onGetUserInfo">获取unionId</button> //点击opentype为getUserInfo的按钮时 ,onGetUserInfo (e) { var that = this console.log('按钮的属性:'); console.log(e.detail.userInfo) //1、登录 wx.login({ success: function (res) { wxcode2session(res) } }) //2、获取session var wxcode2session=function(res){ var data = { action: 'wxcode2session', code: res.code } wd.wd.mina.request(data).then(res=>{ console.log('wxcode2session return:'); console.log(res.data); //这里面 /*{ openid: "oXB7d4omfhcqH4A0YWsmMd4CBxe0", session_key: "zPLZSql5kcoF72VkOvBwIw==", unionid: "oEbPtwzaqqx9W36Ib4Um-lN6n6R8" }*/ if( res.data.unionid != undefined ){ that.setData({ unionId2: res.data.unionid }) } var session_key = res.data.session_key getInfo(session_key) }) } //3、获取信息 var getInfo = function(session_key){ wx.getUserInfo({ lang: 'zh_CN', success: function (res) { console.log('wx.getUserInfo return:'); console.log(res); var iv = res.iv var encryptedData = res.encryptedData if (iv != undefined && encryptedData != undefined) { res['session_key'] = session_key decrypt(res) } } }) } //4、解密数据 var decrypt = function(res){ var data = { action: 'wxDecryptData', encryptedData: res.encryptedData, iv: res.iv, sessionKey: res.session_key, } console.log('wxDecryptData send:'); console.log(data); wd.wd.mina.request(data).then(res=>{ var ret = res.data; console.log('wxDecryptData return:'); console.log(ret); if( ret.status == 0 ){ if( ret.data.unionId != undefined ){ that.setData({ unionId1: ret.data.unionId }) } }else{ } }) }//eof-decrypt } })
官方说有六种方法可以获取unionId:
绑定了开发者帐号的小程序,可以通过以下途径获取 UnionID。
1、调用接口 wx.getUserInfo,从解密数据中获取 UnionID。注意本接口需要用户授权,请开发者妥善处理用户拒绝授权后的情况。
2、如果开发者帐号下存在同主体的公众号,并且该用户已经关注了该公众号。开发者可以直接通过 wx.login + code2Session 获取到该用户 UnionID,无须用户再次授权。
3、如果开发者帐号下存在同主体的公众号或移动应用,并且该用户已经授权登录过该公众号或移动应用。开发者也可以直接通过 wx.login + code2Session 获取到该用户 UnionID ,无须用户再次授权。
4、用户在小程序(暂不支持小游戏)中支付完成后,开发者可以直接通过getPaidUnionId接口获取该用户的 UnionID,无需用户授权。注意:本接口仅在用户支付完成后的5分钟内有效,请开发者妥善处理。
5、小程序端调用云函数时,如果开发者帐号下存在同主体的公众号,并且该用户已经关注了该公众号,可在云函数中通过 cloud.getWXContext 获取 UnionID。
6、小程序端调用云函数时,如果开发者帐号下存在同主体的公众号或移动应用,并且该用户已经授权登录过该公众号或移动应用,也可在云函数中通过 cloud.getWXContext 获取 UnionID。
第3项是涉及到移动应用,第4项是小程序支付,第5、6项是云开发。所以小程序里面常规的开发就是第1、2两种。也就是我们上面演示的两种方法。
要饭二维码
洪哥写文章很苦逼,如果本文对您略有帮助,可以扫描下方二维码支持洪哥!金额随意,先行谢过!大家的支持是我前进的动力!
文章的版权
本文属于“洪哥笔记”原创文章,转载请注明来源地址:微信小程序获取获取unionId的两种方法:http://www.splaybow.com/post/xiaochengxu-unionid-386.html
如果您在服务器运维、网络管理、网站或系统开发过程有需要提供收费服务,请加QQ:8771947!十年运维经验,帮您省钱、让您放心!
亲,如果有需要,先存起来,方便以后再看啊!加入收藏夹的话,按Ctrl+D!
发布时间:2020/6/21 7:27:03 | 编辑:洪哥 | 分类:小程序 | 浏览: