Spring Boot+微信小程序_保存微信登录者的个人信息

 

1. 前言

微信小程序 开发平台,提供有一类 API ,可以让开发者获取到微信登录用户的个人数据。这类 API 统称为 开放接口 。

Tip:微信小程序开发平台,会把微信登录用户的个人信息分为 明文数据 和 敏感数据 。

明文数据也称为公开数据,开发者可以直接获取到,如登录者的昵称、头像……

敏感数据如电话号码、唯一标识符……等数据,只有高级认证开发者和经过登录者授权后才能解密获取到。

这一类 API 较多,且 API 之间功能有重叠之处,相互之间的区别较微小。有的适用于低版本,有的适用于高版本。

为了避免在使用时出现选择混乱,本文将通过具体应用案例介绍几个常用 API 的使用。

2. 开放接口

开放接口 是对一类 API 的统称, 开发者 可以通过调用这类接口得到微信登录用户的 授权 或获取登录者的 个人数据 。

开放接口 又分成几个子类 API :

  • 登录接口: 包括 wx.pluginLogin(Object args) 、 wx.login(Object object) 、 wx.checkSession(Object object) 几 个 API 。
  • 账号信息: 包括 Object wx.getAccountInfoSync() 此接口用来获取开发者的账号信息。
  • 用户信息: 包括 wx.getUserProfile(Object object) 、 wx.getUserInfo(Object object) 、 UserInfo 。使用频率非常高的接口,常用于小程序中获取登录者个人公开数据。
  • 授权接口: wx.authorizeForMiniProgram(Object object) 、 wx.authorize(Object object)

除上述列出的子类接口,还有收货地址、生物认证……等诸多子类 API ,有兴趣者可以自行了解。

2.1 登录接口

登录 接口中有 3 个 API ,对于开发者来说,使用频率较高的是 login 接口,此环节将重点介绍此接口。

非本文特别关注的接口,会简略带过。

wx.pluginLogin(Object args) :此接口只能在插件中可以调用,调用此接口获得插件用户的标志凭证 code ,插件可使用此凭证换取用于识别用户的唯一标识 OpenpId 。

用户不同、宿主小程序不同或插件不同的情况下,该标识均不相同,即当且仅当同一个用户在同一个宿主小程序中使用同一个插件时, OpenpId 才会相同。

对于一般开发者,此 接口用的不是很多,具体使用细节在此处也不做过多复述。

什么是 OpenId ?

当微信用户登录公众号或小程序时,微信平台为每一个微信登录者分配的一个唯一标识符号。

2.1.1 wx.login(Object object)

功能描述:

  • 开发者使用此接口可以获取到 微信登录者 的 登录凭证(code) 。

    登录凭证 具有临时性,也就是每次调用时都会不一样,所以 code 只能使用一次。

  • 开发者可以通过临时 code ,再向微信接口服务器索取登录者的唯一标识符 OpenId 、微信开发平台账号的唯一标识 UnionID (需要当前小程序已绑定到微信开放平台帐号)、以及会话密钥 session_key 。

那么,获取到的 openId 和 session_key 对于开发者而言,有什么实质性的意义?

  • 根据 OpenId 的唯一性特点,可以在微信用户第一次登录时,把 OpenID 保存在数据库或缓存中,在后续登录时,只需要检查用户的 OpenId 是否存在于数据库或缓存中,便能实现自动登录功能。

  • session_key 也称会话密钥,用来解密微信登录者的敏感数据。

    后文将详细介绍。

如何获取 OpenId ?

现通过一个简单案例,实现微信小程序端与开发者服务器之间的数据交互。以此了解开发者服务器如何通过微信小程序传递过来的用户临时 code 换取到登录者的更多信息。

实现之前,先通过一个简易演示图了解其过程。

简单描述整个请求过程:

  • 微信用户打开微信小程序后,开发者在微信小程序中通过调用 wx.login 接口获取到临时登录凭证 code 。
  • 在微信小程序中调用 wx.request 接口向开发者服务器发送 http 请求,需要把登录凭证 code 一并发送过去。
  • 开发者服务器使用发送过来的 code 以及开发者凭证信息向 微信接口服务器 索取微信登录者的 openId 和 session_key 。

简而言之,就是 3 者(微信小程序、开发者服务器、微信接口服务器)之间的一个击鼓传花游戏。

开发流程:

第一步:项目结构分析

完整的系统由 2 个部分组成:

  • 微信小程序端 APP 。

    如对微信小程序开发不是很了解,请先阅读官方提供的相关文档。

  • 服务器端应用程序。

    本文的服务器端应用程序基于 Spring Boot 开发平台。

本项目结构是标准的前后端分离模式,微信小程序是前端应用,服务器端应用程序为后台应用。

第二步:新建微信小程序(前端应用)

打开微信开发工具,新建一个名为 guokeai 的小程序项目 ,项目会初始化一个 index 页面。在 index.js 中编写如下代码。

//index.js
const app = getApp()
const httpRequest = require("../../utils/request.js")

Page({
  data: {
    isHasUserInfo: null,
    userInfo: null
  },
  //启动时
  onLoad: function () {
    let this_ = this
    /***
     * 检查微信用户是否已经登录到后台服务器
     * 已经登录的标志,数据库中存在 OPENID
     */
    let code = null
    //调用 login 接口
    wx.login({
      success: (res) => {
        //得到登录用户的临时 code
        code = 
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值