微信小程序获取unionid_小程序的openid有什么用

微信小程序获取unionid_小程序的openid有什么用UniqueID以及openid的获取涉及到用户的敏感信息,返回的数据encryptedData是加密后的数据要提取信息需要对数据进行解密官网提供了解密的算法,将nodejs的版本拿过来稍作修改即可下载cryptojs放到项目的utils目录下 在utils目录下新建decode.js写入以下内容//utils/decode.jsvarCrypto=require…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

UniqueID 以及 openid的获取涉及到用户的敏感信息,返回的数据encryptedData是加密后的数据要提取信息需要对数据进行解密

官网提供了解密的算法,将nodejs的版本拿过来稍作修改即可

  • 下载 cryptojs 放到项目的utils目录下
  • 在utils 目录下新建decode.js 写入以下内容
//utils/decode.js
var Crypto = require('./cryptojs/cryptojs.js').Crypto;

function WXBizDataCrypt(appId, sessionKey) {
  this.appId = appId
  this.sessionKey = sessionKey
}

WXBizDataCrypt.prototype.decryptData = function (encryptedData, iv) {
  // base64 decode :使用 CryptoJS 中 Crypto.util.base64ToBytes()进行 base64解码
  var encryptedData = Crypto.util.base64ToBytes(encryptedData)
  var key = Crypto.util.base64ToBytes(this.sessionKey);
  var iv = Crypto.util.base64ToBytes(iv);

  // 对称解密使用的算法为 AES-128-CBC,数据采用PKCS#7填充
  var mode = new Crypto.mode.CBC(Crypto.pad.pkcs7);

  try {
    // 解密
    var bytes = Crypto.AES.decrypt(encryptedData, key, {
      asBpytes: true,
      iv: iv,
      mode: mode
    });

    var decryptResult = JSON.parse(bytes);

  } catch (err) {
    console.log(err)
  }

  if (decryptResult.watermark.appid !== this.appId) {
    console.log(err)
  }

  return decryptResult
}

module.exports = WXBizDataCrypt

Jetbrains全家桶1年46,售后保障稳定

  • 在app.js 引入decode.js 对数据进行解密
  • var WXBizDataCrypt = require('utils/decode.js');
    
    var AppId = 'XXXXXX'  
    var AppSecret = 'XXXXXXXXX'
    
    //app.js
    App({
      onLaunch: function () {
        //调用登录接口
          wx.login({
            success: function (res) {
              wx.request({
                url: 'https://api.weixin.qq.com/sns/jscode2session',
                data: {
                  appid: AppId,
                  secret: AppSecret,
                  js_code: res.code,
                  grant_type: 'authorization_code'
                },
                header: {
                  "Content-Type": "application/x-www-form-urlencoded"
                },
                method: 'GET',
                success: function(res) {
                  var pc = new WXBizDataCrypt(AppId, res.data.session_key)
                  wx.getUserInfo({
                    success: function (res) {
                      var data = pc.decryptData(res.encryptedData, res.iv)
                      console.log('解密后 data: ', data)
                    }
                  })
                },
                fail: function(res) {
                }
              })
            }
          })
      }
    })

    注意:UniqueID 的获取微信开放平台帐号必须已完成开发者资质认证,否则解密后的数据没有UniqueID字段

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/214252.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • .bat文件打开方式[通俗易懂]

    .bat文件打开方式[通俗易懂]有的时候不小心将后缀名.bat文件在选择打开方式时误勾选了用记事本或者其他文本编辑器打开,结果电脑上的*.bat文件的打开方式都变成了记事本或者其他文本编辑器。本方法就是恢复.bat文件的默认打开方式。1、同时按住windows键和R键,在出来的框中输入regedit,打开注册表编辑器。2、找到:计算机\HKEY_CURRENT_USER\SOFTWARE\MICROSOFT\WINDOWS\currentversion\Explorer\FileExts.bat删除除了openwithlist

    2022年7月15日
    18
  • RewriteCond 详解[通俗易懂]

    RewriteCond 详解[通俗易懂]RewriteCond重写规则执行条件语法:RewriteCondTestStringCondPattern生效域:serverconfig,virtualhost,directory,.htaccess特别的上面的TestString,可提供反向引用.引用模式为:%N其中N为(0<=N<=9),引用当前若干Rew…

    2022年6月14日
    36
  • poj1050最大子矩阵和

    poj1050最大子矩阵和

    2022年2月6日
    35
  • java面向对象的三大特性

    java面向对象的三大特性java面向对象的三大特性包括:封装、继承、多态一、封装1.含义:封装就是把同一类事物的共性(包括属性和方法)归到同一类中,方便使用。封装也称信息隐藏,是指利用抽象数据类型把数据和基于数据的操作封装起来,使其成为一个不可分割的整体,数据隐藏在抽象数据内部,尽可能的隐藏数据细节,只保留一些接口使其与外界发生联系。也就是说用户无需知道内部的数据和方法的具体实现细节,只需根据留在外部的接口进行操作就行。2.封装的实现需要修改属性的访问控制符(修改为private);创建getter/setter方

    2022年7月9日
    18
  • 如果不能显示真正的考验个别车型toast问题解决

    如果不能显示真正的考验个别车型toast问题解决

    2022年1月10日
    42
  • 微机原理课程设计电梯控制系统_控制系统设计基础

    微机原理课程设计电梯控制系统_控制系统设计基础目录一课程设计内容任务(3)二对课设任务的解读(3)三系统结构模型框图(3)四各部分程序流程图(4)五数字控制器设计(5)六系统仿真(6)七抗干扰性分析(11)八硬件设计(13)九系统设计硬件元素选型(14)十心得体会……………………………………………………………………16…

    2022年10月5日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号