小程序模板网

小程序微信登陆获取openid和unionid

2018-04-18 库褥官

基于微信生态的产品,微信登陆、模版消息、微信支付、微信分享已经成为标准配置,可以依赖微信强大的用户基础和庞大的社交网络来实现业务目标。

使用微信登录就是为了获取openid和用户的基本信息如昵称、头像、性别、所在城市这些内容。如果为了保持多个产品线的用户统一的话,还需要unionid这个大神器,前提是把APP、小程序、公众号、网站这些内容绑定到微信开放平台,访问 open.weixin.qq.com。否则是获取不到unionid。

获取openid有两种方式 
方式一 
1、调用wx.login(),获取code

 

				
  1. wx.login({
  2. success: function (res) {
  3. console.log(res.code)
  4. }
  5. })

2、调用wx.request() 根据code、appid、secret这三个参数获取openid,建议appid、secret在后台设置,不要网络上传输,通过wx.request()只要把code传后台即可

方式二  1、调用wx.getUserInfo() 获取encryptedData(加密数据),iv(加密算法的初始向量)

 

				
  1. wx.getUserInfo({
  2. withCredentials:true,
  3. success:function(res){
  4. var userInfo = res.userInfo
  5. var nickName = userInfo.nickName
  6. var avatarUrl = userInfo.avatarUrl
  7. var gender = userInfo.gender
  8. var province = userInfo.province
  9. var city = userInfo.city
  10. var country = userInfo.country
  11. var iv = userInfo.iv
  12. var encryptedData = userInfo.encryptedData
  13. }
  14. })

2、把返回的数据iv、encryptedData进行解密获取openid,这种方式在能获取openid的同时,也能获取到unionid,获取到的数据如下所示

 

				
  1. {
  2. "openId": "OPENID",
  3. "nickName": "NICKNAME",
  4. "gender": "GENDER",
  5. "city": "CITY",
  6. "province": "PROVINCE",
  7. "country": "COUNTRY",
  8. "avatarUrl": "AVATARURL",
  9. "unionId": "UNIONID",
  10. "watermark": {
  11. "appid": "APPID",
  12. "timestamp": "TIMESTAMP"
  13. }
  14. }

微信官方提供了AES解密的demo有PHP、C++、Node、Python,有一期会专门讲,悟空来全栈营小程序组提供了一个JAVA版本,在获取微信转发群ID的时候也要用到。

注:wx.getUserInfo()默认是获取不到iv和encryptedData的,需要请求的参数中设置withCredentials为true



易优小程序(企业版)+灵活api+前后代码开源 码云仓库:starfork
本文地址:https://www.eyoucms.com/wxmini/doc/course/23678.html 复制链接 如需定制请联系易优客服咨询:800182392 点击咨询
QQ在线咨询