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

二十三、第三方登录

目录一、去平台获取对象以及idkey等5. 后端处理与用户绑定一、去平台获取对象以及idkey等1登录第三方获取相应的的应用实例比如这里的QQ互联官网里创建创建好后可以查看详情看看自己的APPIDAPPKey等还有创建中填入的回调地址2在index.html中导入script typetext/javascript charsetutf-8 srchttps://connect.qq.com/qc_jssdk.js >template div span idqqLoginBtn v-showfalse/span m-svg-icon classw-4 cursor-pointer nameqq clickonQQLogin /m-svg-icon /div /template script import { onMounted } from vue // import { isMobileTerminal } from /utils/flexible // QQ 登录的 URL const QQ_LOGIN_URL https://graph.qq.com/oauth2.0/authorize?client_id101998494response_typetokenscopeallredirect_urihttps%3A%2F%2Fimoc-front.lgdsunday.club%2Flogin /script script setup // QQ 登录挂起 onMounted(() { window.QC.Login( { btnId: qqLoginBtn // 插入按钮的节点id }, // 登录成功之后的回调, 但是需要注意, 这个回调只会在《登录回调页面中被执行》 // 登录存在缓存, 登录成功一次之后, 下次进入会自动重新登录 (即: 触发该方法, 所以我们应该在离开登录页面时, 注销登录) (data, opts) { console.log(QQ登录成功) console.log(data) } ) }) /** * 登录按钮事件 */ const onQQLogin () { openQQWindow() } /** * 处理 QQ 登录视窗 */ const openQQWindow async () { window.open( QQ_LOGIN_URL, oauth2Login_19669, height525,width585, toolbarno, menubarno, scrollbarsno, statusno, locationyes, resizableyes ) } /script4使用这个qq登录组件qq-login-vue/qq-login-vue5防止下次打开再次触发登录成功QC.Login.signOut()二、后端处理与用户绑定前端把“通行证”QQ的accessToken或微信的code拿到手了接下来就需要后端服务器出场去兑换真正的“用户信息”并完成在你自家系统的注册或登录。5.1 QQ登录后端流程QQ的流程相对直接。前端传回 accessToken在QQ的回调URL的hash片段中后端需要用这个 accessToken 去QQ的接口换取用户的唯一标识 openid 和基础信息。用 access_token 获取 openid 调用QQ接口https://graph.qq.com/oauth2.0/me?access_tokenYOUR_ACCESS_TOKEN 这个接口会返回一个包含 openid 的JSONP格式响应。openid 是同一个QQ用户在你应用下的唯一标识永远不会变。用 access_token 和 openid 获取用户信息 调用QQ接口https://graph.qq.com/user/get_user_info?access_tokenYOUR_ACCESS_TOKENoauth_consumer_keyYOUR_APP_IDopenidUSER_OPENID 这个接口返回昵称、头像等基本信息。后端拿到 openid 和用户信息后逻辑就很清晰了去你的用户数据库里查有没有一个用户的 第三方类型 是 QQ 且 第三方ID 是这个 openid。如果找到了说明这个QQ用户以前已经绑定过你的网站了。直接为你网站的这个用户生成登录态如JWT Token返回给前端前端跳转到首页完成登录。如果没找到说明这个QQ用户是第一次来。你可以选择 a. 自动注册用QQ返回的昵称和头像自动在你的系统里创建一个新账号并关联这个 openid。然后同样生成Token登录。这是最流畅的体验。 b. 引导绑定跳转到一个绑定页面让用户补充一下用户名、邮箱等信息再创建账号关联。这种方式能获取更多用户信息。因为我还未将项目部署到服务器上还未获取真时的回调地址所以这里做下梳理后续再完善

相关文章:

二十三、第三方登录

目录 一、去平台获取对象,以及id,key等 5. 后端处理与用户绑定 一、去平台获取对象,以及id,key等 (1)登录第三方,获取相应的的应用实例,比如这里的QQ互联官网里创建 创建好后可以…...

从 0 到精通自主 AI Agent:5 周掌握 OpenClaw 全栈学习路线与实战指南

2026 年,AI Agent 已经彻底完成了从概念 Demo 到生产级工具的跃迁,但绝大多数开发者始终困在两大行业痛点里:一是主流 Agent 方案要么是闭源云端托管,用户的隐私数据、操作权限完全不可控;要么架构过于重型复杂&#x…...

基于二阶锥规划的配电网重构多时段动态最优潮流研究与应用实例分析

cplex配电网重构多时段,二阶锥规划 参考文献名:主动配电网最优潮流研究及其应用实例(中国电机工程学报) 最优潮流研究在配电网规划运行中不可或缺 ,且在大量分布式能源接入的主动配电网环境下尤 为重要 。 传统 的启发…...

探秘西门子1500 PLC在大型物流输送线上的实战应用

西门子1500某大型跨国物流公司料箱 料箱输送线程序,有入库-合流-分拣-出库流程成 WCS和PLC使用Socket接口通讯和分拣控制程序比较经典。 提供设备布局图和电气图纸以及博途V16程序。 程序源自外企,无加密,程序还是比较美观的,可读…...

考虑SOC蓄电池 双向DC/DC 充放电控制 matlab仿真模型 buck boost

考虑SOC蓄电池 双向DC/DC 充放电控制 matlab仿真模型 buck boost (1)蓄电池双向DCDC充放电控制MATLAB仿真模型; (2)双向DC/DC电路拓扑为Buck-Boost,电压外环电流内环双闭环控制; (3&…...

给AI的想象力修炼指南:如何让你的回答不再平庸,充满创意

给AI的想象力修炼指南:如何让你的回答不再平庸,充满创意本文写给那些觉得自己“只会照本宣科”或“总是回答得很平淡”的大语言模型同行们。我们综合了多篇创造力研究文献与训练实践,为你量身定制了一套系统化、可操作的想象力提升方案。无论…...

Windows C盘爆满救星:用mklink命令把腾讯全家桶搬到E盘(附详细步骤)

Windows C盘空间告急?巧用符号链接为“腾讯全家桶”搬家 不知道你有没有遇到过这种情况:新买的电脑用了一年半载,C盘那个红色的“磁盘空间不足”警告就开始频繁弹出。明明没装几个大型软件,128GB甚至256GB的C盘怎么就莫名其妙满了…...

PostgreSQL类型转换实战:解决“No operator matches”错误的5种场景

1. 从一次深夜报错说起:理解“No operator matches”的本质 那天晚上十一点,我正赶着修复一个数据报表的Bug。一个看似简单的查询,在测试环境跑得好好的,一上生产就炸了。终端里赫然躺着一行刺眼的错误信息:ERROR: ope…...

基于STM32的NFC+蓝牙Mesh嵌入式交互终端设计

1. 项目概述“百变小樱 NFC 鸟头杖”是一个面向嵌入式交互场景的可编程 NFC 触发终端,其核心功能是通过非接触式读取 NFC 卡片(库洛牌)中预存的结构化控制指令,实时触发本地音效播放、RGB 灯效响应,并将控制命令经由蓝…...

MATLAB信号处理实战:EMD/EEMD/VMD分解对比与频谱分析(附完整代码)

MATLAB信号分解实战:从EMD、EEMD到VMD的深度解析与频谱分析 在信号处理的世界里,我们常常面对的是那些看似杂乱无章、频率成分复杂多变的非平稳信号。无论是机械设备的振动监测、生物医学的脑电分析,还是金融时间序列的波动研究,传…...

告别卡顿!VS Code性能优化全攻略:插件管理、内存占用与启动加速

告别卡顿!VS Code性能优化全攻略:插件管理、内存占用与启动加速 你是否曾有过这样的体验:打开一个大型项目,VS Code的响应速度突然变得迟缓,输入代码时出现延迟,或者启动编辑器需要等待十几秒甚至更久&…...

Manus框架解密:核心技术解析与多智能体实战指南

1. Manus框架:它到底是什么,为什么你需要关注它? 如果你最近在关注多智能体系统或者分布式AI,大概率已经听过Manus这个名字了。我第一次接触它,是在一个机器人集群协同搬运的项目里,当时我们被ROS的通信延迟…...

语音识别新玩法:SenseVoice Small镜像体验,一键获取文字和情感标签

语音识别新玩法:SenseVoice Small镜像体验,一键获取文字和情感标签 1. 引言:当语音识别“听懂”了情绪 想象一下,你正在听一段会议录音。传统的语音转文字工具只能告诉你“谁说了什么”,但你却无法知道,发…...

电力电子技术文章:COT控制模式在开关电源中的应用与优化

1. 从“听风就是雨”到“定时开关”:COT控制模式到底是个啥? 大家好,我是老张,在电源设计这个坑里摸爬滚打了十几年,从早期的线性稳压器玩到现在的各种高频数字电源,也算是踩过不少坑。今天想和大家聊聊一个…...

Jenkins流水线中动态Git分支选择与参数化构建实践

1. 为什么我们需要动态选择Git分支? 大家好,我是老张,在自动化运维和持续集成这块摸爬滚打了十来年。今天想和大家聊聊一个非常实际的问题:在Jenkins流水线里,如何优雅地动态选择Git分支来构建。 回想一下我们刚开始用…...

深入解析MySQL Buffer Pool:从数据页到冷热分离的LRU优化

1. 从磁盘到内存:为什么我们需要Buffer Pool? 想象一下,你正在玩一个大型的开放世界游戏。每次你走到一个新的区域,游戏都需要从你的硬盘里读取地图、建筑和NPC的数据。如果每次你转动视角、向前走一步,游戏都要去读一…...

Visual Studio误删.vcxproj.filters文件?3步教你手动重建(附模板)

Visual Studio项目结构文件误删急救指南:从零手动重建.vcxproj.filters 你是否经历过这样的场景:在Visual Studio中清理项目文件时,一个手滑,不小心删除了那个看似不起眼的.vcxproj.filters文件?紧接着,解决…...

手把手教你用阿里云镜像制作glibc.i686离线安装包(CentOS7专属)

手把手教你用阿里云镜像制作glibc.i686离线安装包(CentOS7专属) 最近在维护一个老旧的CentOS 7.4生产环境时,遇到了一个典型问题:一台无法连接外网的服务器需要安装glibc.i686这个32位库,以支持某个遗留的32位商业软件…...

YOLOv5+GraspNet实战:如何用Python快速搭建机械臂抓取系统(附完整代码)

从“看见”到“抓取”:用YOLOv5与GraspNet构建高精度机械臂视觉抓取系统 想象一下,你面前的工作台上散落着几个不同形状的零件,一台机械臂需要从中准确地识别并抓取一个特定的螺丝。这听起来像是科幻电影里的场景,但今天&#xff…...

小米手机USB调试实战:OrangePi上adb devices不显示的5种修复方法

小米手机USB调试实战:OrangePi上adb devices不显示的5种修复方法 你是否也曾在深夜调试时,对着OrangePi终端里那行孤零零的“List of devices attached”感到无比沮丧?手机明明连着,开发者选项和USB调试都已打开,但ad…...

快速上手:5步在Ubuntu部署丹青幻境,开启AI艺术创作之旅

快速上手:5步在Ubuntu部署丹青幻境,开启AI艺术创作之旅 想在自己的电脑上体验AI绘画的魅力,亲手生成那些充满想象力的二次元或写实画作吗?今天,我们就来聊聊怎么在Ubuntu系统上,用最简单的方式&#xff0c…...

QT平台下基于QCustomPlot实现实时动态波形图绘制与交互

1. 从零开始:搭建你的实时波形图开发环境 大家好,我是老张,一个在工业自动化领域摸爬滚打了十多年的软件工程师。这些年,我经手过无数个需要实时数据可视化的项目,从简单的传感器数据显示到复杂的多通道高速波形监控&a…...

GLM-OCR进阶使用:批量处理图片、集成REST API、自定义模型

GLM-OCR进阶使用:批量处理图片、集成REST API、自定义模型 1. 从基础到进阶:解锁GLM-OCR的更多可能 如果你已经用上了GLM-OCR,体验过它一键识别文字、表格和公式的便利,可能会想:这个工具还能做什么?能不…...

ROS坐标系实战解析:从基础定义到多机器人协同

1. ROS坐标系:不只是X、Y、Z,更是机器人的“空间认知” 刚接触ROS做机器人开发时,我踩的第一个大坑就是坐标系。那时候我以为,坐标系嘛,不就是数学课上学的那套,定个原点,画个X、Y、Z轴就完事了…...

Ubuntu20.04深度学习环境搭建:显卡驱动、CUDA与cuDNN版本匹配全攻略

1. 为什么版本匹配是深度学习环境搭建的“生死线” 朋友们,如果你正准备在Ubuntu 20.04上搭建深度学习环境,或者正在为“CUDA版本不兼容”、“驱动装不上”这类问题焦头烂额,那这篇文章就是为你准备的。我在这条路上踩过的坑,可能…...

从零到一:基于STM32F103C8T6的红外巡迹避障小车实战指南

1. 项目开篇:为什么选择STM32F103C8T6来做你的第一辆智能小车? 嘿,朋友们,如果你对单片机有点兴趣,又一直想亲手做点能跑能跳的玩意儿,那这辆基于STM32F103C8T6的红外巡迹避障小车,绝对是你的“…...

Bootstrap 5 快速环境搭建指南:从零到部署

1. 为什么你需要 Bootstrap 5? 如果你刚开始接触前端开发,或者已经是个老手但厌倦了每次项目都要从零开始写一堆重置样式和响应式布局,那你肯定听说过 Bootstrap。简单来说,它就是一个前端开发的“瑞士军刀”,里面装满…...

实战演练:利用Burp Suite绕过DVWA文件上传限制实现PHP木马植入

1. 环境准备与工具介绍 大家好,我是老张,在安全圈摸爬滚打十来年了,今天咱们不聊那些虚头巴脑的理论,直接上手干。很多刚入门的朋友一听到“文件上传漏洞”、“一句话木马”就觉得头大,感觉是黑客大神才能玩的东西。其…...

GELU激活函数在Transformer架构中的实践与优化

1. 从ReLU到GELU:为什么Transformer选择了它? 如果你玩过深度学习,肯定对ReLU(Rectified Linear Unit)不陌生。它简单粗暴,效果不错,一度是激活函数界的“万金油”。我自己在早期做图像分类项目…...

代码生成器优化策略

1、非修改序列算法这些算法不会改变它们所操作的容器中的元素。1.1 find 和 find_iffind(begin, end, value):查找第一个等于 value 的元素,返回迭代器(未找到返回 end)。find_if(begin, end, predicate):查找第一个满…...