微信小程序Ⅴ [获取登陆用户信息,重点openID(详解)]

♩ 背景

  • 其实这篇文章几个月前就写完了,可是这段时间,微信小程序官方文档有了更新,同事在我本身的实际操做过程当中,发现以前写的过于繁杂,因此如今进行简化梳理,欢迎指摘.

♪ 步骤梳理

  • 下面是小程序官方提供流程图:

♫ 具体实现

1、登陆获取用户惟一信息 openID/unionID

  • 此方式,只须要两步操做便可,可是须要小程序端和项目服务器的代码配合进行操做,建议参考下官方说明 >>> wx.login(OBJECT)
步骤梳理:
> (1).获取临时登陆凭证—— code
> (2).将上述得到的 code 经过request 请求发送给代码服务器
> (3).请求接口地址:https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
	> ;# 成功则会返回咱们所须要的 "openID/unionID"
  • 具体实现:

①. 服务端代码处理

  • 后面将会进行源代码的上传,具体代码在 "WxController.class.php" 中,可做参考

②.小程序端 js编码

  • 我在此处设置了一个 "button" 按钮,经过点击而调用其中的方法逻辑,其实在实际开发中,自行将其中的代码提取调用就可;
/** * 获取用户惟一凭证 */
bingGetOpenID: function() { 
 
   
    wx.login({ 
 
   
      success: function(data) { 
 
   
        console.log('获取登陆 Code:' + data.code)
        var postData = { 
 
   
          code: data.code
        };
        wx.request({ 
 
   
          url: 'http://fetowNew.com/wxApi/wx/getOpenID',//注意改为本身的服务器请求地址哦!
          data: postData,
          method: 'POST', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
          header: { 
 
   
            'content-type': 'application/x-www-form-urlencoded;charset=utf-8',
          },
          success: function(res) { 
 
   
            //回调处理
            console.log('getOpenID-OK!');
            console.log(res.data);
          },
          fail: function(error) { 
 
   
            console.log(error);
          }
        })
      },
      fail: function() { 
 
   
        console('登陆获取Code失败!');
      }
    })
  },

③. 运行效果以下:

  • 注意观察个人数据获取状况,你会发现其中包含了 "unionID",这是由于我在微信开放平台进行了绑定操做,若是你没有这样的操做,那么就不会有这个数据

提示:
UnionID 只在知足必定条件的状况下返回。具体参看 >>> UnionID机制说明
注意配置信息的填写,须要正确填写本身的数据哦,应该歧义不大php

2、新方法获取用户信息

  • 若是你接触小程序时间较早,应该会知道,微信小程序官方以前是使用接口 wx.getUserInfo() 方法进行操做的,可是由于近期版本更新,如今有了新的方法,推荐阅读文档了解, wx.getUserInfo(OBJECT) 接口获取用户信息

①. 第一步,页面使用button引导

官方文档已作注明:请使用 <button open-type="getUserInfo"></button> 引导用户主动进行受权操做html

  • 最简单的使用方式就是,使用页面中的 Button 进行引导操做便可:
<button open-type="getUserInfo" lang="zh_CN" bindgetuserinfo="bingGetUserInfo">获取用户信息</button>

②. 第二步,js文件进行绑定事件处理

  • 在对应的 js文件中,建立相应的方法 bingGetUserInfo()
/** * 获取用户信息 */
  bingGetUserInfo:function(e){ 
 
   
  console.log(e.detail);
  },
  • 上述方法执行后的打印数据截图以下:

③. 第三步,后续处理

  • 根据上一步获得的 e.detail 打印出的对象数据,直接进行提取所须要的数据(好比微信昵称和头像连接、性别等);
  • 而后经过 wx.request() 存储到本身的服务器中便可;

注意(后面步骤,可继续也可中止,自行决定!):

> 其实,获取当前登陆用户的 "openID/unionID" 信息在前面"(一)"已经能够简单的得到了;
> 可是若是想继续当前的步骤的话:
  • 咱们彻底能够直接经过得到的 "encryptedData",而后对其进行 算法对称解密操做,就能够获取到用户的 openID/unionID 这些敏感数据,而且文档中也提供了不一样语言的示例代码
步骤梳理:
1).获取临时登陆凭证(code)
2).根据上一步中微信端传来的参数 "code",在本地服务器中请求微信的接口地址,从而获得"session_key"
	>接口地址为:"https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code"
3).服务端获取数据签名加密信息

④. 进一步的实现处理

  • 小程序 js代码的补充扩展,其实仍是前面的 bingGetUserInfo()方法:

提示web

以个人 PHP 代码为例,调用 WXBizDataCryptController 类的 wxDecrypt() 方法,传入前面所得到的全部参数便可算法

  • 附一张数据反馈截图:
提示:
> 此时只要进行数据转化便可获得咱们所须要的 "openid/unionid" 重要信息;
> 好比,我须要用到此信息去数据库比对该用户的业务信息等;
> 固然,我建议的是在服务端获取到数据后就与本身的数据库进行匹配处理便可

♬ 附录

♦ 推荐参考:

♥ 源码下载

CSDN-源码连接 欢迎指摘

本文同步分享在 博客“moTzxx”(CSDN)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。数据库

相关文章
相关标签/搜索