微信小顺序猎取用户的 OpenId (附前端代码)

OpenId是什么?

openid 是示意用户在你的当前运用中的
唯一标识,比方小顺序,微信民众号等,这些都算是一个运用,假如你有多个运用,同一个用户的openId能够并不相同

**下图是猎取OpenId的历程微信的官方文档和时序图**

《微信小顺序猎取用户的 OpenId (附前端代码)》

**小顺序登录的时序图**

《微信小顺序猎取用户的 OpenId (附前端代码)》

思绪:

  1. 起首挪用wx.login({})猎取登录凭据(code)
  2. 挪用接口前,需要把微信小顺序的appid 和 secret 示知后端
  3. 用拿到的code 调换 openid

实例:

App({
onLaunch: function() {
    var self = this;
    // 展现当地存储才能
    var logs = wx.getStorageSync('logs') || []
    logs.unshift(Date.now())
    wx.setStorageSync('logs', logs)

/** 重点来了****************
    |
    |
    |
    |
*********/
    // 登录
    wx.login({
      success: res => {
        // 发送 res.code 到背景调换 openId, sessionKey, unionId
        var Params = {
          code: res.code, //暂时登录凭据
          key: self.globalData.MD5Key
        };
        //天生加密key
        Params.key = self.MD5(Params.code + "&" + self.getNowTime() + "&" + Params.key);
        wx.request({
          url: 'https://testurl/api/test/GetOpenId', //此处填写第三方的接口地点
          data: '=' + JSON.stringify(Params),
          header: {
            'content-type': 'application/json'
          },
          method: 'POST', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
          success: function(res) {
            var openid = res.data.RntData.openid //返回openid
            self.globalData.openid = openid;
            console.log(openid);
          }
        })
      }
    })
    /** 重点完毕
    |
    |
    |
    |
********************************/
    // 猎取用户信息
    wx.getSetting({
      success: res => {
        if (res.authSetting['scope.userInfo']) {
          // 已受权,能够直接挪用 getUserInfo 猎取头像昵称,不会弹框
          wx.getUserInfo({
            success: res => {
              // 能够将 res 发送给背景解码出 unionId
              this.globalData.userInfo = res.userInfo

              // 因为 getUserInfo 是收集要求,能够会在 Page.onLoad 以后才返回
              // 所以此处到场 callback 以防备这类状况
              if (this.userInfoReadyCallback) {
                this.userInfoReadyCallback(res)
              }
            }
          })
        }
      }
    })
  }
})

是否是很猎奇,为何会多了一步,用第三方服务器去接见微信接口的历程呢?

假如appid和secret存在当地或许前端直接去猎取,很轻易被抓包从而致使用户信息泄漏,因而,用第三方服务器去要求微信接口,能确保openID的安全性

    原文作者:Aimee
    原文地址: https://segmentfault.com/a/1190000018342169
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞