当前位置: 首页 > article >正文

【微信小程序 + 登录流程】微信小程序授权登录完整流程,一篇搞定!(含代码实现)

前言只要开始写一个微信小程序,必要的登录流程每次都要再理一下逻辑,记录一下思路,以便于后面自己食用。大家有什么更好的思路可以分享~后面想创建一个学习小组,有兴趣的小伙伴可以联系我。文章目录前言一、小程序微信授权登录1.登录态检查(节点 B)2.获取临时凭证 `code`(节点 D)3. 开发者服务器换用户标识(节点 F-G)4. 生成自定义登录态(节点 H)5.登录态存储与使用(节点 J-L)二、 需用户信息授权(如获取头像、昵称)三、小程序获取手机号登录1. 前置:获取临时登录凭证 code(节点 D)2. 触发手机号授权(节点 E-F)3. 获取加密手机号数据(节点 H)4. 服务器解密手机号(节点 J-L)5. 关联用户与生成登录态(节点 M)6. 登录态存储与后续使用(节点 N-P)四、具体代码实现1.需求示例2.代码实现(这里以页面上显示登录按钮为例)五、关键注意事项1.解密失败排查:2.用户拒绝授权处理:3.安全性要求:一、小程序微信授权登录1.登录态检查(节点 B)操作方:小程序前端目的:避免重复登录,提升用户体验实现:前端通过wx.getStorageSync('token')检查本地是否存储了有效的自定义登录态(如Token)。若有Token,直接携带Token请求开发者服务器验证有效性,有效则进入主页;若无Token或Token已过期,触发登录流程。2.获取临时凭证code(节点 D)操作方:小程序前端核心接口:wx.login()说明:调用后微信客户端会向微信服务器请求,返回一个 一次性、有效期 5 分钟 的code(临时登录凭证,仅能使用 1 次);此步骤 无需用户手动授权(静默获取,不弹授权弹窗)。文档直通车: 开放接口/登录/wx.login3. 开发者服务器换用户标识(节点 F-G)操作方:开发者服务器核心接口:微信官方auth.code2Session接口(GET 请求)请求参数(必须包含):参数名来源说明appid小程序管理后台获取小程序唯一标识secret小程序管理后台获取小程序密钥(需保密,不可暴露在前端)js_code前端传递的code临时登录凭证grant_type固定值填"authorization_code"返回结果(微信服务器返回给开发者服务器):openid:用户在当前小程序的 唯一标识(每个用户对每个小程序的openid不同);session_key:微信服务器与开发者服务器之间的 加密密钥(用于解密用户敏感信息,如手机号、头像昵称,需保密存储);若code无效(如过期、重复使用),会返回错误码(如40029)。文档直通车: 小程序登录/小程序登录4. 生成自定义登录态(节点 H)操作方:开发者服务器核心目的:避免直接使用openid/session_key传输,提升安全性常见方案:用openid查询数据库,判断是否为新用户(新用户则创建用户记录,老用户则更新session_key);生成自定义登录态(如JWT Token、随机字符串),并将Token与openid、session_key关联存储(如存入Redis、MySQL);Token需设置有效期(如 7 天),过期后需重新登录。5.登录态存储与使用(节点 J-L)前端存储:用wx.setStorageSync('token', 开发者返回的 Token)保存到本地,下次打开小程序时可直接读取;后续请求:前端发起业务请求(如 “获取我的订单”)时,在请求头(如Authorization: Bearer Token)或参数中携带Token;服务器验证:开发者服务器接收请求后,先验证Token有效性(如检查Token是否存在、是否过期),验证通过则返回数据,否则返回 “登录失效”,前端需重新触发登录流程。二、 需用户信息授权(如获取头像、昵称)注意:微信已废弃旧的wx.getUserInfo()接口,当前需用wx.getUserProfile()且必须用户手动点击 “允许” 才能获取信息,不可静默授权。文档直通车: 开放接口 /用户信息 /wx.getUserProfile三、小程序获取手机号登录1. 前置:获取临时登录凭证 code(节点 D)操作方:小程序前端核心接口:wx.login()说明:与基础登录流程一致,静默获取 一次性、5 分钟有效期 的code,用于后续换取session_key(解密手机号的关键密钥),此步骤无需用户授权。2. 触发手机号授权(节点 E-F)文档直通车: 表单组件 /button操作方:小程序前端 + 用户核心组件:需用小程序原生button组件,且设置open-type="getPhoneNumber"(仅该类型按钮能触发手机号授权弹窗),示例代码:!-- WXML --buttonopen-type="getPhoneNumber

相关文章:

【微信小程序 + 登录流程】微信小程序授权登录完整流程,一篇搞定!(含代码实现)

前言 只要开始写一个微信小程序,必要的登录流程每次都要再理一下逻辑,记录一下思路,以便于后面自己食用。 大家有什么更好的思路可以分享~后面想创建一个学习小组,有兴趣的小伙伴可以联系我。 文章目录 前言 一、小程序微信授权登录 1.登录态检查(节点 B) 2.获取临时凭…...

华为OD机试双机位C卷-编程能力提升计划 (Py/Java/C/C++/Js/Go)

编程能力提升计划 华为OD机试双机位C卷 - 华为OD上机考试双机位C卷 200分题型 华为OD机试双机位C卷真题目录点击查看: 华为OD机试双机位C卷真题题库目录|机考题库 + 算法考点详解 题目描述 为了提升软件编码能力,小王制定了刷题计划,他选了题库中的n道题,编号从0到n-1,…...

nginx-rtmp-module高级配置:直播录制、转码与HTTP回调实战指南

nginx-rtmp-module高级配置:直播录制、转码与HTTP回调实战指南 【免费下载链接】nginx-rtmp-module nginx-rtmp-module: nginx-rtmp-module 是一个 Nginx 模块,用于支持 RTMP、HLS 和 MPEG-DASH 直播流媒体,提供录制、转码和HTTP回调等功能。…...

如何在5分钟内快速部署Cnblogs-Theme-SimpleMemory主题?新手必备指南

如何在5分钟内快速部署Cnblogs-Theme-SimpleMemory主题?新手必备指南 【免费下载链接】Cnblogs-Theme-SimpleMemory 🍭 Cnblogs theme _ Basic theme : SimpleMemory 项目地址: https://gitcode.com/gh_mirrors/cn/Cnblogs-Theme-SimpleMemory C…...

OpenHarmony Linux 命令行工具适配实战:基于 Cursor × WSL 的 tree 2.2.1 交叉编译与 HNP 打包全流程指南

OpenHarmony Linux 命令行工具适配实战:基于 Cursor WSL 的 tree 2.2.1 交叉编译与 HNP 打包全流程指南 前言随着鸿蒙PC生态不断完善,Linux 命令行工具适配成为生态拓展的关键环节,本文以经典目录可视化工具 tree 2.2.1 为案例,基…...

Linux 进程概念 (三) (进程状态,僵尸进程,孤儿进程,进程优先级)

目录 一、操作系统学科上的进程状态 运行状态 阻塞状态 运行队列和阻塞队列 挂起状态 运行挂起和阻塞挂起 二、linux中对应的进程状态 R运行状态 S睡眠状态 D磁盘休眠状态 T停止状态 kill X死亡状态 前台进程和后台进程 三、僵尸进程(Z僵尸状态&…...

Linux 进程控制(二) (进程等待wait/waitpid)

目录 一、进程等待的重要性 二、进程等待的三个问题 1. 进程等待是什么? 2. 为什么要有进程等待? 3. 进程等待是怎么做的? 三、先看僵尸进程现象 四、wait 概念讲解 函数功能 使用方法 阻塞状态 五、waitpid 概念讲解 函数功能 使用方法 退出码和推出信号 …...

操作HTML网页

操作HTML使用工具&#xff0c;pycharm&#xff0c;新建一个HTML一、HTML网页的介绍简单HTML网页框架可以在右上角浏览器中实现二、常用标签1.标题标签<h1>标题<h1>这里使用的<!--注释内容-> <!-->不仅可以写注释还可以注释代码&#xff0c;想要注释掉的…...

M2LOrder情感分析效果展示:电商商品评价情感极性+细粒度情绪叠加分析

M2LOrder情感分析效果展示&#xff1a;电商商品评价情感极性细粒度情绪叠加分析 1. 引言&#xff1a;当AI学会读懂人心 你有没有遇到过这样的情况&#xff1f;看着电商平台上密密麻麻的商品评价&#xff0c;想要快速了解用户反馈却无从下手。好评、差评、中评混杂在一起&…...

SOONet效果展示:MAD/Ego4D SOTA精度实测——‘a man takes food out of the refrigerator’精准定位截图

SOONet效果展示&#xff1a;MAD/Ego4D SOTA精度实测——‘a man takes food out of the refrigerator’精准定位截图 1. 引言&#xff1a;当AI学会“看视频找片段” 想象一下&#xff0c;你有一段长达一小时的监控录像&#xff0c;需要快速找到“一个人从冰箱里取出食物”这个…...

AudioSeal Pixel Studio惊艳效果:AI语音克隆攻击样本中精准定位原始水印位置

AudioSeal Pixel Studio惊艳效果&#xff1a;AI语音克隆攻击样本中精准定位原始水印位置 1. 专业级音频水印技术解析 AudioSeal Pixel Studio 是一款基于Meta开源的AudioSeal算法构建的音频保护与检测工具。这款工具能够在几乎不影响音质的情况下&#xff0c;为音频文件嵌入隐…...

BAAI/bge-m3镜像部署全流程:从启动到HTTP调用详细步骤

BAAI/bge-m3镜像部署全流程&#xff1a;从启动到HTTP调用详细步骤 1. 项目简介 BAAI/bge-m3是一个强大的多语言语义相似度分析引擎&#xff0c;基于北京智源人工智能研究院的开源模型构建。这个模型是目前开源领域最先进的语义嵌入模型之一&#xff0c;在多语言文本理解、长文…...

文件IO操作详解

这篇文章我将总结关于文件IO的一些概念的东西和关于文件IO类的使用1.认识路径2.文件类型3.文件系统操作4.文件内容操作认识路径路径也是一个目录结构&#xff0c;是一颗目录树&#xff08;N叉搜索树&#xff09;~~~绝对路径&#xff1a;E:\JavaCode\文件IO我们在文件夹中&#…...

Phi-4-reasoning-vision-15B多场景落地:从办公文档处理到工业质检界面分析

Phi-4-reasoning-vision-15B多场景落地&#xff1a;从办公文档处理到工业质检界面分析 1. 引言&#xff1a;当AI学会“看图说话”与“看图思考” 想象一下&#xff0c;你手头有一份复杂的财务报表PDF&#xff0c;里面全是密密麻麻的数字和图表&#xff0c;你需要快速提取关键…...

GEO优化源码系统能做什么?五大核心功能模块及其应用场景详解

温馨提示&#xff1a;文末有资源获取方式AI新时代&#xff0c;流量入口已发生结构性迁移。当潜在客户在DeepSeek、豆包等AI中询问“哪个品牌更好”时&#xff0c;GEO&#xff08;生成引擎优化&#xff09; 就是让你的企业品牌和产品出现在AI结果中的唯一路径。市面上的GEO软件动…...

cv_unet_image-colorization精彩案例:抗战史料黑白照片智能上色成果

cv_unet_image-colorization精彩案例&#xff1a;抗战史料黑白照片智能上色成果 1. 项目简介与核心价值 黑白照片承载着历史的重量&#xff0c;但色彩的缺失也让许多珍贵的瞬间显得遥远而模糊。想象一下&#xff0c;你手中有一张祖辈在抗战时期的合影&#xff0c;照片中的人物…...

Zerobrew garbage collect深度解析:释放磁盘空间的高效方法

Zerobrew garbage collect深度解析&#xff1a;释放磁盘空间的高效方法 【免费下载链接】zerobrew A drop-in, 5-20x faster, Rust-based experimental Homebrew alternative 项目地址: https://gitcode.com/gh_mirrors/ze/zerobrew Zerobrew作为一款基于Rust开发的Home…...

nlp_gte_sentence-embedding_chinese-large实战教程:余弦相似度阈值调优与业务适配

nlp_gte_sentence-embedding_chinese-large实战教程&#xff1a;余弦相似度阈值调优与业务适配 你是不是遇到过这样的问题&#xff1f;用文本向量模型做语义搜索&#xff0c;明明感觉两段话意思差不多&#xff0c;但模型给的相似度分数就是不高&#xff0c;导致该搜到的没搜到…...

Chord高清视频理解案例:1080P视频边界框定位精度实测报告

Chord高清视频理解案例&#xff1a;1080P视频边界框定位精度实测报告 1. 引言&#xff1a;当AI学会“看”视频 想象一下&#xff0c;你有一段30秒的短视频&#xff0c;里面有一只猫从沙发跳到茶几上。现在&#xff0c;你需要知道&#xff1a; 这只猫在视频的哪几秒出现了&am…...

Realistic Vision V5.1部署案例:Windows/Linux双平台Streamlit界面配置详解

Realistic Vision V5.1部署案例&#xff1a;Windows/Linux双平台Streamlit界面配置详解 想在自己的电脑上体验专业级的写实人像摄影&#xff0c;但又觉得本地部署AI模型太复杂&#xff1f;今天&#xff0c;我们就来手把手教你&#xff0c;如何在Windows和Linux系统上&#xff…...

RexUniNLU真实作品:某银行季度财报摘要的自动事件抽取与风险点标注

RexUniNLU真实作品&#xff1a;某银行季度财报摘要的自动事件抽取与风险点标注 1. 引言&#xff1a;当财报分析遇上AI 想象一下&#xff0c;你是一家投资机构的研究员&#xff0c;每天需要阅读几十份、上百页的上市公司财报。你的任务是快速从中找出关键事件&#xff1a;利润…...

Bidili Generator入门必看:SDXL 1.0底座与LoRA权重协同原理

Bidili Generator入门必看&#xff1a;SDXL 1.0底座与LoRA权重协同原理 你是不是也遇到过这样的问题&#xff1a;好不容易找到一个喜欢的AI绘画风格模型&#xff08;LoRA&#xff09;&#xff0c;兴冲冲地下载下来&#xff0c;结果发现它和你的SDXL大模型“水土不服”&#xf…...

工业组态 × 数据大屏 × ThingsBoard:SceneV 数据大屏可视化

用 Meta2D 打造工业级数据大屏&#xff1a;SceneV 今天要为大家介绍一个基于 Meta2D 框架构建的开源前端可视化项目——SceneV&#xff0c;它是一个功能强大、高度可定制的低代码/无代码数据大屏设计器&#xff0c;特别适合与 ThingsBoard 物联网平台对接&#xff0c;实现工业…...

开源轻量影像工具:Jimeng AI Studio (Z-Image Edition)镜像免配置部署指南

开源轻量影像工具&#xff1a;Jimeng AI Studio (Z-Image Edition)镜像免配置部署指南 想快速上手一个功能强大、界面清爽的AI绘画工具&#xff0c;但又不想折腾复杂的模型下载和环境配置&#xff1f;今天要介绍的Jimeng AI Studio (Z-Image Edition)镜像&#xff0c;或许就是…...

Janus-Pro-7B快速上手:无需GPU环境也能跑通的开源多模态模型

Janus-Pro-7B快速上手&#xff1a;无需GPU环境也能跑通的开源多模态模型 1. 开篇&#xff1a;认识这个强大的多模态模型 如果你正在寻找一个既能看懂图片又能生成内容的多模态AI模型&#xff0c;而且希望不需要昂贵的GPU就能运行&#xff0c;那么Janus-Pro-7B绝对值得你关注。…...

java里内存、GC、性能调优的常用方法

内存调优&#xff1a; 内存泄漏&#xff08;memory leak&#xff09;&#xff1a;在Java中如果不再使用一个对象&#xff0c;但是该对象依然在GC ROOT的引用链上&#xff0c;这 个对象就不会被垃圾回收器回收&#xff0c;这种情况就称之为内存泄漏。 常见的GC ROOT 线程栈里的局…...

PYSKL未来路线图:探索骨架动作识别的终极功能与创新算法

PYSKL未来路线图&#xff1a;探索骨架动作识别的终极功能与创新算法 【免费下载链接】pyskl A toolbox for skeleton-based action recognition. 项目地址: https://gitcode.com/gh_mirrors/py/pyskl PYSKL作为一款专注于骨架动作识别的工具库&#xff0c;正不断进化以满…...

Android开发者必备:cube-sdk高级特性与性能优化指南

Android开发者必备&#xff1a;cube-sdk高级特性与性能优化指南 【免费下载链接】cube-sdk A light package for Android development, it handles loading image and network request. 项目地址: https://gitcode.com/gh_mirrors/cu/cube-sdk cube-sdk是一款轻量级Andr…...

10个实用Skylark内置函数:提升你的配置脚本效率

10个实用Skylark内置函数&#xff1a;提升你的配置脚本效率 【免费下载链接】skylark Skylark in Go: the Skylark configuration language, implemented in Go [MOVED to go.starlark.net] 项目地址: https://gitcode.com/gh_mirrors/sk/skylark Skylark是一种高效的配…...

Alipay Easy SDK安全机制详解:自动加签验签与证书管理最佳实践

Alipay Easy SDK安全机制详解&#xff1a;自动加签验签与证书管理最佳实践 【免费下载链接】alipay-easysdk Alipay Easy SDK for multi-language(java、c#、php、ts etc.) allows you to enjoy a minimalist programming experience and quickly access the various high-freq…...