微信小程序解析unionid

微信小程序登录全解析:AppID、OpenID、UnionID 核心概念与实战避坑指南 在移动应用开发中,用户身份认证是构建安全可靠系统的基石。其核心原理是通过可信的第三方服务验证用户身份,并生成唯一的身份标识,以实现安全的会话管理和数据关联。这项技术的价值在于,它为应用提供了无缝的用户体验和精准的用户画像能力,是社交登录、支付、个性化推荐等高级功能的基础。在微信生态中,这套机制通过 AppID、OpenID 和 UnionID 等关键标识符得以实现,广泛应用于小程序、公众号等场景。理解这些标识符的定义、生命周期和相互关系,是解决诸如“invalid openid”等常见登录错误、设计健壮用户 阅读详情

微信小程序解析用户unionid等信息

  1. 调用wx.login获取 用户临时登录凭证code(有效期5分钟);
  2. 调用wx.getUserInfo获取加密过的数据encryptedData和解密参数iv;
  3. 将code、encryptedData、iv传给后台,并在后台调用微信auth.code2Session方法,然后将解析到的信息返回给前台。
    前端代码示例如下:
注意:这里的wx.login和wx.getUserInfo调用顺序,先调用getUserInfo后调用wx.login会导致获取到的code和getUserInfo返回的加密数据不匹配,从而可能会导致解析unionid等用户信息失败!血的教训。
var app = getApp();
const utils = require('util.js');
/**
 * 获取用户信息
 */
function getUserInfo(callback) {
  let _this = this;
  /**
   *1.判断用户是否授权过(获取用户信息)
   */
  wx.showLoading({
    title: '加载中...',
    mask: true
  })
  wx.getSetting({
    success: function (setting) {
      if (setting.authSetting['scope.userInfo']) {
        wx.login({
          success(loginRes){
            wx.getUserInfo({
              success: function (res) {
                console.log('getUserInfo获取用户信息:', res);
                let userInfo = res.userInfo;
                wx.request({
                  url: utils.baseUrl + 'index',
                  data: {
                    code: loginRes.code,
                    iv: res.iv,
                    encryptedData: res.encryptedData,
                  },
                  method: 'GET',
                  header: {
                    'content-type': 'application/json'
                  }, // 设置请求的 header
                  success: function (data) {
                    console.log('解析unionId:', data);
                    if (data.data.resultCode == '1') {
                      userInfo.openId = data.data.data.openId;
                      userInfo.unionId = data.data.data.unionId;
                      wx.setStorageSync('userInfo', userInfo);
                      //执行回调函数
                      if (callback) {
                        callback();
                      }
                      wx.hideLoading();
                    } else {
                      wx.hideLoading();
                      utils.showToast(data.data.resultMsg);
                    }
                  },
                  fail(err) {
                    wx.hideLoading();
                  }
                })
              },
              fail: function (err) {
                _this.getUserInfo();
              }
            })
          },
          fail(loginErr){
            wx.hideLoading();
          }
        })
      }
      else {
        //没有授权的情况,跳转到welcome页面
        _this.getUserInfo();
      }
    },
    fail(){
      wx.hideLoading();
    }
  })
}


module.exports = {
  getUserInfo: getUserInfo
}

后台代码示例,官方在文档中提供了:php,python,node.c++的示例代码,java版本,在网上可以搜的到,很多开发者在博客中提供了java示例代码,详情见官方文档服务端获取开放数据

ok,搞定收工!

深入解析微信小程序中的appid、openid与unionid:从定义到实战应用 本文深入解析微信小程序开发中的三个核心概念:appid、openid与unionid。appid是小程序的唯一标识,openid用于识别用户在小程序中的身份,而unionid则实现微信生态内跨应用用户识别。文章通过实战案例详细讲解三者的定义、获取方式及应用场景,帮助开发者构建更安全高效的微信小程序用户体系。 阅读详情

相关推荐

axi ps读写pl_PL读写DDR:Datamover能干什么

最近发现工程项目中一直在用AXI-DMA。这玩意儿搬数据倒是没问题,就是用axi-lite配置起来非常反人类。。。简单的办法其实是用datamover ip核。这个ip核能干嘛呢。准备写个文章解析一下。由于好多feature没用过,所以仅仅看文档可能理解有误,欢迎指出错误。首先扫个盲:MM2S指的是Memory map to stream. 读DDR. S2MM指的是steam to memory...

weixin_35908791的博客 1597

微信小程序之获取并解密用户数据(获取openId、unionId)

【版权声明:本文为博主原创文章,若需转载,请注明出处。】 前言 微信小程序API文档:https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-login.html 在实际的小程序开发中,往往需要用户授权登陆并获取用户的数据,快速对接用...

chiyan5284的博客 2633

手把手教会你用yolov8从环境配置到检测任务实战

做本文章前,我浏览过很多网上资料,我发现他们总是写的含糊不清,而且实际操作起来就会有各种各样的问题,要么就是根本不适合一些小白,所以我在这里写一篇完全针对小白的yolo从入门到实战。看完本文章后大家都可以实现下图效果,数字识别是一种比较简单的检测任务,其他识别任务学完本例也能够一通百通,大家边做边学,更好的体会yolo的神奇之处。

KevenDuan的博客 2871

微信小程序登录unionId的获取和获取手机号的解密算法

微信小程序在调取登录过程中,手机号和unionId的获取都需要揭秘算法,微信多个平台需要unionId进行统一管理时小程序在进行登录时普通的流程unionId获取不到,需要进行解密,后端代码如下 下边是解密算法工具类 ------------------------------------------------------------------------------------------...

moon1_love的博客 1581

ARKit面部动画实战:如何用blend shape让数字人表情更自然(附中文对照表)

本文深入探讨了如何利用ARKit的blend shape技术驱动数字人面部动画,以实现更自然生动的表情。文章提供了详细的blend shape中文对照表,并分享了实战技巧,包括构建复合表情动画序列、处理不对称性与微表情,以及性能优化策略,旨在帮助开发者高效提升数字人的表情表现力。

weixin_29292535的博客 326

CTF实战:手把手教你用Python破解转轮机加密(附完整脚本)

本文详细介绍了如何使用Python逆向破解转轮机加密,特别针对CTF比赛中的Crypto类题目。通过解析转轮机加密原理、实战Python脚本编写及调试技巧,帮助参赛者快速掌握破解方法,提升在攻防世界等CTF比赛中的解题效率。

silver的专栏 1116

微信小程序无法获取UnionId的情况及处理

  问题背景:做了微信小程序,一切都还正常,但是最后体验版放出去时,却发现很多用户无法绑定用户,后台返回:参数非法。经过多方排查,发现是微信拿到的code请求返回的数据里没有UnionId,也就是接口返回的参数中不包含UnionId参数。 1、UnionID机制说明   简而言之,微信针对不同的用户在不同的应用下都有唯一的一个 openId,但是要想确定用户是不是同一个用户,就需...

weixin_30416871的博客 1437

原创_新魔百和CM201-1鸿蒙架构当贝乐家语音安卓9线刷固件包刷机教程可救砖rom刷机包

不用担心变砖,因为系统内核会自动判断分区及CPU等级,假设你CPU是高于S905L3的那么。7.adb功能支持,系统增加开机自启功能,添加老人桌面模式,默认为年轻化桌面;所以我发的这个固件可适用于_cw_ys_zg_zn代工上生产的盒子进行刷机;5.CPU及GPU算法更改,当观看4K片源时,AI智能会自动优化系统后台进程,正如我所说,本固件是采用安卓公版镜像制作而成,那么代工厂也是使用的公版镜像,1.移植鸿蒙架构代码,完美融合安卓系统,增加系统的稳定性;刷机的时候 他会自动短接链接,所以不存在变砖。

a138088150的博客 1万+

关于获取不到unionid问题

先来看一段微信小程序对于unionid介绍 如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过unionid来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的unionid是唯一的。换句话说,同一用户,重点内容对同一个微信开放平台下的不同应用,unionid是相同的。 同一个微信开放平台下的相同主体的App、公众号、

qq_34979933的博客 8540

H3C VRF实验

POP-vpn-instance-RT1]route-distinguisher 11:11 # VPN实例-RT1的路由区分器值11:11。配置路由泄露,其实就是在一个VPN示例中添加另一个VPN实例的下一跳,比如在VPN实例RT1中添加去往SRV的默认路由。但是也有了一个新的问题,那就是RT1、RT2和RT3也能互访了,这让VPN实例变得没有意义了。[POP]ip vpn-instance RT1 #配置vpn实例-RT1。绑定了VPN实例,所以要把路由添加到VPN实例POP中。

m0_68698993的博客 4025

gdb对dwarf调试信息的解析和使用

gdb的对dwarf的调试信息的解析到使用的过程分析

JS072110的专栏 9568

微信小程序开发笔记

微信小程序开发过程中的一些记录,包括最基本的unionId的获取以及在小程序内嵌的h5中使用微信jssdk的方法等。

weixin_44649793的博客 6080

STM32实战开发(76):STM32开发无线传感器网络(WSN)完整实现

本文介绍了如何基于STM32开发无线传感器网络,包括硬件选择、通信协议、系统设计和编程实现。通过STM32的强大性能和低功耗特性,我们能够构建高效、可靠的无线传感器网络。无论是Zigbee、LoRa、Wi-Fi还是BLE协议,STM32都能够与多种通信模块进行兼容,满足不同应用的需求。希望这篇文章能帮助您了解无线传感器网络的构建流程,并为您的项目提供有价值的参考。

2201_76125393的博客 1059

微信小程序中的用户ID(包括openid和unionid)

最近在做微信小程序的开发,以前小程序这块接触的不多,所以就想把在项目中每一步遇到的问题总结下来。 开始做的时候,这个openId肯定是要打交道的。那下面我们来看一下openId到底是怎么一回事吧。 做过微信开发的同学,多多少少都会涉及到用户的唯一标识的问题。由于微信牢牢把控着用户的信息,因此当你需要在微信平台中获取用户的标示信息,必然要通过微信的平台接口来获取(其实这个openId是来区分用户唯一...

时清云的博客 1万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

微信小程序获取unionID的悲剧 unionID返回为null

微信小程序获取unionID的悲剧 unionID返回为null 同一个微信开放平台下的相同主体的App、公众号、小程序的unionid是相同的,这样就可以锁定是不是同一个用户。微信针对不同的用户在不同的应用下都有唯一的一个openId, 但是要想确定用户是不是同一个用户,就需要靠unionid来区分。如果用户没有关注过或者使用过同一个微信开放平台下的主体那么用户首次使用的时候unionid必为空!(除过强制授权的主体) 要想获取unionid就必须绑定微信开放平台 首先,前端调用wx.login的时候会返

weixin_43201315的博客 4955

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

微信小程序 获取unionid解决方案

其实个人是安卓开发,无奈公司需求,所以我个人也自学了小程序,目前自己独立开发一款小程序,原本授权登录已经做好了,没想到又考虑安卓 、ios 三方登录功能,因此应用都需要同步,不得不用到unionid,这可不又给我出难题了,在网上百度的说需要后端解密encryptedData 数据,于是和后端多沟通,他说没发解密,这就难到我了。 UnionID机制说明 unionid来区分用户的唯一性,在相同微信开放平台帐号下的移动应用、网站应用、小程序、公众号,用户的unionid是唯一的。也就是说,同一用户,对同一个.

迷茫的小亮仔的博客 5109

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

微信小程序获取openid、unionid

注意1: openid 并不能作为用户的唯一标识,openid 同一用户同一应用唯一,unionid 同一用户不同应用唯一,unionid 才是唯一标识,如果需要在多公众号、移动应用之间做用户共通,则需要用 unionid,否则若是单一产品,则也可以用 openid 作为唯一标识。 注意2: 虽然前端能拿到openid,但是发布上线的时候会无法过审,因为出于安全考虑,前端代码不允许暴露小程序appId和app secret(秘钥),所以此种方法不可取。 传code后端获取openid、unionid:

alokka的博客 1722

微信小程序获取不到unionid还有小程序无法解析JSON字符串的问题

一、背景       这边在开发小程序的时候,发现使用wx.login给出的code去请求微信服务器的时候,有时候能取到unionid,有时会取不到unionid。这就造成很多业务上的不便,因为我们在用户第一次授权进来的时候,都是通过unionid来确定这是哪个用户,是否需要注册等。 二、原因   &nbsp...

铁柱的博客 3823

微信小程序登录(包括获取不到unionid的情况)

 我们一般都是先获取到微信的 unionid,然后再通过 unionid 去登录自己的网站,就可以关联到用户在自己网站上的 user_id,但是在小程序登录中,有时候可以获取到 unionid,有时候获取不到,在获取不到 unionid 的情况下,用户无法正常登录网站。 UnionID机制说明:    如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过 unionid...

a18827547638的博客 2826

从微信用户加密数据encryptedData获取用户信息userInfo和unionId

Java后端实现小程序的微信登录时解析加密数据获取unionid 微信登录具体参考:https://blog.youkuaiyun.com/weixin_42346767/article/details/102508736 流程简介: 1. 准备解密必须的jar包或导入相关依赖 2. 创建解密的API或工具类 3. 调用解析 详细介绍及异常配置: 1. 准备解密必须的jar包或导入相...

weixin_42346767的博客 2619

微信小程序的unionid

 我们一般都是先获取到微信的 unionid,然后再通过 unionid 去登录自己的网站,就可以关联到用户在自己网站上的 user_id,但是在小程序登录中,有时候可以获取到 unionid,有时候获取不到,在获取不到 unionid 的情况下,用户无法正常登录网站。 UnionID机制说明:    如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过 unionid...

qq1301518841的博客 3154

微信小程序中的用户ID(openid和unionid)

前沿 做过微信开发的同学,多多少少都会涉及到用户的唯一标示的问题。由于微信牢牢把控着用户的信息,因此当你需要在微信平台中获取用户的标示信息,必然要通过微信的平台接口来获取(当然,你可以通过你自己的平台的逻辑来做,比如让用户注册登录你的平台,但是,这样做,只会让流程更加繁琐,牺牲了用户的体验过程,会得不偿失的) 微信小程序中的ID 在微信小程序的文档中有wx.getUserInfo(Objec...

helang296479893的专栏 3万+

关于小程序登录时获取openId和unionId走过的坑

目前的项目是在做小程序这方面的,接触过的人应该都知道,同一个微信开放平台下的相同主体的App、公众号、小程序的unionid是相同的,这样就可以锁定是不是同一个用户。微信针对不同的用户在不同的应用下都有唯一的一个openId, 但是要想确定用户是不是同一个用户,就需要靠unionid来区分。一般自己的后台都会有自己的一个用户表,每个用户有不同的userid。也就是说同一个用户在同一个微信开放平台下...

sj498541071的博客 2392
上一篇: vue中axios拦截器的使用
下一篇: 高德地图自定义地图样式
Linhoon学习笔记
博客等级 码龄10年 10粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值