微信授权登录02-移动端

目录

## 前言

1.准备工作

1.1 网站域名

1.2 微信公众号

2.授权登录开发

2.1 前端开发

2.1.1 调起微信授权页面

## 调起微信授权页面效果图

2.1.2 用户允许授权后回调处理

2.2 后端开发

2.2.1  根据code查询用户信息

2.2.2 自动注册登录

## 后记


## 前言

上一篇写了PC端微信授权登录,本篇对移动端微信授权登录的实现做个简单记录。区别在于前者基于微信开放平台授权,后者基于公众平台授权。一个是电脑上扫码登录,一个是手机上授权后登录。

上一篇:《微信授权登录01-PC端》

1.准备工作

1.1 网站域名

需要有个外网可访问的已备案域名,作为网站微信授权登录用。

1.2 微信公众号

需要在微信公众平台申请公众号(服务号/订阅号),在基本配置中获取开发者ID(AppID),在公众号设置-功能设置中配置网站授权等域名。

公众平台地址:https://mp.weixin.qq.com/

2.授权登录开发

2.1 前端开发

2.1.1 调起微信授权页面

​//微信登录
const wxLogin = function () {let protocol = window.location.protocol;let host = window.location.host;let redirect_uri = protocol + '//' + host + '/login';let appId = 'xxxxx'; //公众号AppIDlet wxUrlStart = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' + appId + '&redirect_uri=';let wxUrlEnd = '&response_type=code&scope=snsapi_userinfo&state=STATE&connect_redirect=1#wechat_redirect';let allUrl = wxUrlStart + encodeURIComponent(redirect_uri) + wxUrlEnd;window.location.replace(allUrl);
}​

## 调起微信授权页面效果图

首次登录能调起这个授权页说明以上步骤都已OK,如出现提示:“redirect_uri域名与后台配置不一致”,大概率是因为公众平台上网站授权域名没配置好,需要和redirect_uri这里的当前环境域名保持一致才行。

2.1.2 用户允许授权后回调处理

用户允许授权后会自动跳转至自定义的回调地址redirect_uri,并带上公众平台返回的code,拿到这个code去后台查询用户信息进行后续自动注册登录操作。

//获取微信授权重定向后的codelet code = getUrlParam('code');if (code) {//微信授权自动注册登录httpPost('/api/user/wxLogin', {code: code}).then((res) => {setUserToken(res.data)router.push('/chat')}).catch((e) => {ElMessage.error('登录失败,' + e.message)})} //页面重定向获取URL中参数值
const getUrlParam = function(queryName) {const queryString = window.location.search;const params = new URLSearchParams(queryString);const value = params.get(queryName);return value ? decodeURIComponent(value) : null;
}

2.2 后端开发

2.2.1  根据code查询用户信息

先拿code获取AccessToken,再拿AccessToken获取用户的openid、昵称等信息,其中openid是用户唯一标识,可以拿来注册登录用。

需要用到的接口地址:

获取AccessToken:https://api.weixin.qq.com/sns/oauth2/access_token

获取用户信息:https://api.weixin.qq.com/sns/userinfo

具体代码开发可参考官方接口文档:网站应用微信登录开发指南

2.2.2 自动注册登录

拿到用户openid后即可作为用户唯一标识进行注册登录操作。

## 后记

至此开发工作已完成,在域名对应的服务器上部署启动项目,测试功能OK即可。

最后提一下自己的小站(支持微信一键登录),提供了多种AI对话及MJ绘画功能。

体验地址:https://ai.xiaomaicoder.com/login,欢迎体验交流!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/692214.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Flask构建POST请求的Web应用

文章目录 准备工作创建路由处理POST请求创建表单页面运行应用结论 在Web开发中,处理POST请求是一项常见任务,特别是在构建表单提交、用户注册和数据提交等功能时。Flask是一个简单而强大的Python Web框架,它提供了方便的工具来处理HTTP请求&a…

bash tab 补全报错 bash: syntax error near unexpected token `(‘

使用 vim 编辑文件时,敲下 vim xxx 后,再键入 tab 键报进行补全报错 bash: syntax error near unexpected token (. 打开 bash 的命令执行详情 set -v 定位到具体的代码: 显然,代码位于 bash 补全的逻辑当中。 定位代码具体的…

大学生体质测试|基于Springboot+vue的大学生体质测试管理系统设计与实现(源码+数据库+文档)

大学生体质测试管理系统 目录 基于Springboot+vue的大学生体质测试管理系统设计与实现 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2管理员功能模块 3用户功能模块 4教师功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算…

Nios-II编程入门实验

文章目录 一 Verilog实现流水灯二 Nios实现流水灯2.1 创建项目2.2 SOPC添加模块2.3 SOPC输入输出连接2.4 Generate2.5 软件部分2.6 运行结果 三 Verilog实现串口3.1 代码3.2 引脚3.3 效果 四 Nios2实现串口4.1 sopc硬件设计4.2 top文件4.3 软件代码4.4 实现效果 五 参考资料六 …

java入门-面向对象的三大特性

面向对象三大特性 封装 什么是封装 封装 是将代码及其处理的数据绑定在一起的一种编程机制,该机制保证了程序和数据都不受外部干扰且不被误用。 封装的作用 访问控制符 方法传参-值传递 传参类型是基本类型 程序案例: public static void main(St…

BGP学习一:关于对等体建立和状态组改变

目录 一.BGP基本概念 (1).BGP即是协议也是分类 1.早期EGP 2.BGP满足不同需求 3.BGP区域间传输的优势 (1)安全性——只传递路由信息 (2)跨网段建立邻居 4.BGP总结 5.BGP的应用 (1&#…

力扣HOT100 - 295. 数据流的中位数

解题思路&#xff1a; 小顶堆 大顶堆 class MedianFinder {Queue<Integer> A, B;public MedianFinder() {A new PriorityQueue<>();B new PriorityQueue<>((x, y) -> (y - x));}public void addNum(int num) {if (A.size() ! B.size()) {A.add(num);B…

攻防世界-web-file_include

题目 解题 通过阅读php代码&#xff0c;我们明显的可以发现&#xff0c;这个一个文件包含的类型题 文件包含漏洞也是一种“注入型漏洞”&#xff0c;其本质就是输入一段用户能够控制的脚本或者代码&#xff0c;并让服务器端执行。 require()&#xff0c;找不到被包含的文件时…

Vditor集成于VUE笔记

文章目录 前言一、安装Vditor二、渲染markdown三、options3.1 自建CDN3.2 outline大纲不显示、不跳转问题3.3 upload 图片/视频上传3.4 toolbar提示位置点击事件more中文字 3.5 sv分屏渲染模式隐藏编辑框3.6 after中的insertValue或者setValue 前言 Vditor是一款易于使用的 Ma…

vm16安装最新版本的ubuntu虚拟机,并安装g++的步骤记录

背景 低版本的ubuntu安装G一直不成功&#xff0c;干脆安装最新版的 官网下载 bing搜索ubuntu 下载完成 vm16新建虚拟机 一直下一步&#xff0c;安装完成 终端输入命令 sudo apt-get update ᅟᅠ       sudo apt install gcc ᅟᅠ      sudo apt install g