美文网首页
小程序用户信息管理

小程序用户信息管理

作者: LoveBugs_King | 来源:发表于2019-05-31 15:26 被阅读0次

    只需要用户头像和昵称
    可以使用 <open-data /> 组件:

    <open-data type="userAvatarUrl"></open-data>
    <open-data type="userNickName"></open-data>
    

    需要获取用户基本信息(不包括敏感信息)
    一、可以使用wx.getUserInfo()

    条件

    1、该方法需要用户授权过才能返回用户基本信息。
    2、在用户未授权过的情况下调用此接口,将不再出现授权弹窗,会直接进入 fail 回调。在用户已授权的情况下调用此接口,可成功获取用户信息。
    3、授权调用方式,看文档

    二、下面方案二会介绍~

    获取用户敏感信息(openid、unionId、seesion_key等)
    一、可以使用wx.getUserInfo()+加密数据解密算法
    条件:同上。

    二、下面方案二会介绍~

    方案二

    1、前台通过wx.login({})从微信服务器拿到jscode,向开发服务器发送jscode。接口文档
    2、开发服务器以jscode/appid/app_secriet为条件,向微信服务器交换用户敏感信息(openid/session_key/unionid)。接口文档
    3、以openId/unionId为核心数据,把用户信息录入数据库管理起来。
    4、开发服务器把用户数据管理起来后,小程序就可以通过jscode,通过开发服务器提供的各种业务接口获取/上传数据 用户相关啦!
    题外:
    1、开发服务器把用户的openid经过算法处理返回小程序一个userId(出于安全考虑)。
    2、权限控制也在小程序内完成,开发服务器可以返回一个字段来做。

    问题:开发服务器可以拿到用户敏感信息,怎么拿到用户基本信息?
    开发服务器会给小程序提供2个接口:
    1、上面说了,小程序把jscode和用户头像发给开发服务器,这个作为登录接口,便于开发服务器向微信服务器获取敏感信息
    2、开发服务器向小程序提供一个上传信息接口,小程序把用户基本信息通过getUserInfo获取到后,和jscode一起上传到开发服务器。开发服务器把基本信息和敏感信息关联起来,存入数据库管理起来。

    总结一下:
    对于基础用户信息,昵称/头像/性别/国家/省份/城市/语言,小程序在用户授权后通过getUserInfo自己都可以拿到。
    对于敏感数据(openid/session_key/unionid),小程序是不能直接拿到的,开发服务器有两种获取方式:
    1、直接通过小程序传过来的jscode,加上appid/app_secriet,向微信服务器直接获取。
    2、小程序把通过wx.login({})拿到的jscode 和 通过getUserInfo获取到encryptedDataiv传给开发服务器,开发服务器向微信服务器通过jscode换取(openid/session_key/unionid)。开发服务器拿到encryptedDataivsession_key,可以通过加密数据解密算法去解密得到敏感数据。

    关于微信小程序登录:
    1、我们通过wx.login({})获取code传给开发服务器,开发服务器通过code/appid/appsecriet去微信服务器获取openid/unionid/session_key。这个session_key就是小程序用户的登录态,它会过期。我们可以通过wx.checksession()判断用户登录是否过期。
    2、开发服务器会把用户的openid/账号/密码/用户基本信息(除了openid都是小程序传过来的),关联起来储存进数据库。
    3、用户一进入小程序,就会去获取code传给开发服务器,开发服务器换取session_key,通过openid去查找该用户查看session_key是否和之前一致,不一致就是过期了,返回给小程序是否过期消息。如果过期,小程序就跳到登录页面,没过期就跳去账户首页。
    4、另外开发服务器的每一个接口都要求小程序要传一个token令牌字段,作为登录态,检查用户身份是否正确及登录是否过期。
    5、token令牌怎么得到?我们为了安全,一般不把session_key直接直接给到小程序,而是把session_key通过算法得到一个userId,在开发服务器的登录接口返回给小程序,小程序储存起userId,每次请求都带上这个userId。
    不需要服务器登录的用户呢?
    既然不需要服务器登录,那也就不需要判断用户身份和登录是否过期。也就不需要登录系统。那就无所谓了。

    疑问:为什么开发服务器通过jscode就已经获取到敏感数据了,为什么还要去解密???

    说是,jscode只能获得openid,解密才能获得unionId。但文档说jscode也能获取openid。
    

    相关文章

      网友评论

          本文标题:小程序用户信息管理

          本文链接:https://www.haomeiwen.com/subject/kudwtctx.html