小程序获取用户信息

本文介绍了小程序获取用户信息的两种方式:使用wx.getUserInfo获取基本资料,和利用wx.login获取包括openId在内的详细信息。流程涉及获取appId和secret,通过wx.login得到code,然后在后台用code换取openid和session_key,后者用于加密通信。
摘要由CSDN通过智能技术生成

获取用户信息有两种,一种是获取用户的基本信息(用户名称,图像等),另一种是获取用户在微信中的详细信息(openId等)

首先要有小程序的appId和secret

第一种:wx.getUserInfo获取用户基本信息

wx.getUserInfo({
     success: function (res) {
      that.setData({
          nickName: res.userInfo.nickName,
         avatarUrl: res.userInfo.avatarUrl,
      })
      },
})

第二种:wx.login获取用户信息

调用接口获取登录凭证code(有效期五分钟)。通过凭证进而换取用户登录态信息,包括用户的唯一标识(openid)及本次登录的会话密钥(session_key)等。用户数据的加解密通讯需要依赖会话密钥完成

在login获取到code,然后发送到开发者后端,
 
后端再通过接口去微信后端换取到openid和sessionKey,如果小程序绑定公众平台就会将用户的唯一标识

unionid一并返回之后(用户在公众平台关联的账号内unionid不变),
 
然后把3rd_session返回给前端,
 
就已经完成登录行为。而login行为是静默,不必授权的,不会对用户造成骚扰。
 
getUserInfo只是为了提供更优质的服务而存在,
 
比如展示头像昵称,判断性别,通过unionId和其他公众号上已有的用户画像结合起来提供历史数据。
 
所以不必在刚刚进入小程序的时候就强制要求授权。
wx.login({
  success (res) {
    if (res.code) {//登录凭证code
        wx.getUserInfo({
           success: function(res2) {
                   wx.request({
                     //后台接口地址
                      url: 'https://....com/wx/login',
                      data: {
                        code: res.code,
                        encryptedData: res2.encryptedData,
                        iv: res2.iv
                      },
                      method: 'GET',
                      header: {
                        'content-type': 'application/json'
                      },
                      success: function (res) {
                        that.setData({
                          nickName: res.data.nickName,//用户名称
                          avatarUrl: res.data.avatarUrl,//用户图像
                        })
                        wx.setStorageSync('openId', res.data.openId);//用户唯一标识openId
 
                      }
                    })
           }
        })

    } else {
      console.log('登录失败!' + res.errMsg)
    }
  }
})

后台请求:

package com.deshangshidai.utils;

import java.security.spec.AlgorithmParameterSpec;
import java.util.HashMap;
import java.util.Map;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.lang3.StringUtils;
import org.apache.xerces.impl.dv.util.Base64;
import org.json.JSONObject;

import com.deshangshidai.redis.RedisUtils;



/**  
* <p>Title: WxxcxUtils</p>  
* <p>Description: </p>  
* @author kq  
* @d
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值