微信小程序获取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字段

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 什么是PXE及PXE启动

    什么是PXE及PXE启动PXE(Pre-bootExecutionEnvironment)是由Intel设计的协议,它可以使计算机通过网络启动。协议分为client和server两端,PXEclient在网卡的ROM中,当计算机引导时,BIOS把PXEclient调入内存执行,并显示出命令菜单,经用户选择后,PXEclient将放置在远端的操作系统通过网络下载到本地运行。  PXE协议的成功运行需要解决

  • web前端开发用什么工具_软件开发的基本步骤

    web前端开发用什么工具_软件开发的基本步骤大家还在使用Dreamweaver这样的弱智工具开发Web前端吗?或者使用VS系列笨重的工具在开发Web的前端吗?你已经Out了。我推荐大家使用WebStorm来做Web前端开发,高端、大气上档次。  相比Dreamweaver弱智的智能提示来看,WebStorm对html特别是HTML5和JS的智能提示简直堪称大神,很值得去使用。不过WebStorm不像Dreamweaver一样支

  • DHCP协议解析

    DHCP协议解析DHCP(DynamicHostConfigurationProtocol,动态主机配置协议)是IETF为实现IP的自动配置而设计的协议,它可以为客户机自动分配IP地址、子网掩码以及缺省网关、DNS服务器的IP地址等TCP/IP参数。了解DHCP工作过程可以帮助我们排除有关DHCP服务遇到的问题。DHCP协议是基于UDP层之上的应用,本文结合抓报所得数据分析DHCP协议实现原理一、

  • Waiting for another flutter command to release the startup lock…

    Waiting for another flutter command to release the startup lock…

  • redis 6379端口不通解决方法「建议收藏」

    redis 6379端口不通解决方法「建议收藏」1.reids服务器的6379端口telnet不通2. 查看reids进程和端口,都是存在的。只是ip地址是127.0.0.1而不是0.0.0.0,只是本机能使用3.查找redis的配置文件redis.conf 使用命令:find/-nameredis.conf 4.查找bind127.0.0.1所在的行数  使用命令:cat/usr/local/re…

  • php开发中常用的几个技巧

    php开发中常用的几个技巧

发表回复

您的电子邮箱地址不会被公开。

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