小程序扫码登录 laravel+easyWeChat扫码登录

2024-04-25 02:38

本文主要是介绍小程序扫码登录 laravel+easyWeChat扫码登录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在做项目的时候,有时候PC端会有微信扫码登录需求,这时候我们应该怎样去实现这个功能呢

刚开始我也是有些迷茫,但是经过多次查看其他有这个功能的网站,其实这个功能也是挺简单的。

其实就是前端在获取二维码的时候,然后返回一个ticket(字段名,可根据个人习惯起名)给前端,然后

前端就根据这个值一直轮询是否已经扫码登录。

因为我的项目用到的是easyWeChat这个插件 所以附上部分代码

	/*** 获取小程序二维码*/public function loginQrcode(){// 生成票据$ticket = md5(uniqid(time()));// 获取小程序二维码$app = Factory::miniProgram(config('easywechat.mini'));$response = $app->app_code->getUnlimit($ticket, [// 'page'  => 'path/to/page', // 发布后才能使用'width' => 280,'auto_color' => false,'is_hyaline' => true,'line_color' => ['r' => 0,'g' => 0,'b' => 0,],]);// 设置缓存和过期时间Cache::put('TICKET_' . $ticket,-1,60 * 10);// 获取返回的图片信息$res = $response->getBody()->getContents();// 生成base64// 注:这里生成的是小程序码,如何转成普通二维码 暂时未知 有思路的同学麻烦解答一下 谢谢。$base64Image="data:image/jpeg;base64,".base64_encode($res);// 返回的数据信息 提示信息、状态码、数据Message::success('success',ErrCode::SUCCESS_CODE,['image_base64' => $base64Image, // 图片'ticket' => $ticket // 票据]);}/*** 轮询是否扫码登录成功* @param Request $request*/public function checkTicketStatus(Request $request){try{// 获取票据$ticket = $request -> input('ticket');// 验证是否有该票据$key = 'TICKET_' . $ticket;$cache = Cache::has($key);if(!$cache){throw new \Exception('TICKET已失效!');}// 获取缓存内容$value = Cache::get($key);if($value == -1){$status = 2;}else{// 查找用户是否存在$memberObj = MemberModel::find($value);if(!$memberObj){$status = 4;}else{$status = 1;Auth::login($memberObj);}Cache::forget($key);}Message::success('success',ErrCode::SUCCESS_CODE,['ticket_status' => $status]);}catch (\Exception $e){Message::error($e -> getMessage(),ErrCode::ERROR_CODE,['ticket_status' => 3 // 1是登录成功 2是等待登录 3是已失效 4ticket信息异常]);}}

这里只是展示了部分代码,剩下用户扫码后是如何操作的,其实很简单。用户扫码后,小程序可获取到scene的值,也就是前端轮询的ticket,然后在用户点击登录的时候,将scene的值一起发送给服务端,然后服务端接收到该ticket后,并且登录成功了,将ticket的值改为用户的id,其实ticket就是缓存的意思

小程序扫码登录的思路大概就是这样了,然后哪里说得不好,欢迎留言指出。谢谢

这篇关于小程序扫码登录 laravel+easyWeChat扫码登录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/933505

相关文章

使用Redis快速实现共享Session登录的详细步骤

《使用Redis快速实现共享Session登录的详细步骤》在Web开发中,Session通常用于存储用户的会话信息,允许用户在多个页面之间保持登录状态,Redis是一个开源的高性能键值数据库,广泛用于... 目录前言实现原理:步骤:使用Redis实现共享Session登录1. 引入Redis依赖2. 配置R

Spring Security 单点登录与自动登录机制的实现原理

《SpringSecurity单点登录与自动登录机制的实现原理》本文探讨SpringSecurity实现单点登录(SSO)与自动登录机制,涵盖JWT跨系统认证、RememberMe持久化Token... 目录一、核心概念解析1.1 单点登录(SSO)1.2 自动登录(Remember Me)二、代码分析三、

Ubuntu 24.04启用root图形登录的操作流程

《Ubuntu24.04启用root图形登录的操作流程》Ubuntu默认禁用root账户的图形与SSH登录,这是为了安全,但在某些场景你可能需要直接用root登录GNOME桌面,本文以Ubuntu2... 目录一、前言二、准备工作三、设置 root 密码四、启用图形界面 root 登录1. 修改 GDM 配

nginx 负载均衡配置及如何解决重复登录问题

《nginx负载均衡配置及如何解决重复登录问题》文章详解Nginx源码安装与Docker部署,介绍四层/七层代理区别及负载均衡策略,通过ip_hash解决重复登录问题,对nginx负载均衡配置及如何... 目录一:源码安装:1.配置编译参数2.编译3.编译安装 二,四层代理和七层代理区别1.二者混合使用举例

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

CSS3打造的现代交互式登录界面详细实现过程

《CSS3打造的现代交互式登录界面详细实现过程》本文介绍CSS3和jQuery在登录界面设计中的应用,涵盖动画、选择器、自定义字体及盒模型技术,提升界面美观与交互性,同时优化性能和可访问性,感兴趣的朋... 目录1. css3用户登录界面设计概述1.1 用户界面设计的重要性1.2 CSS3的新特性与优势1.

python编写朋克风格的天气查询程序

《python编写朋克风格的天气查询程序》这篇文章主要为大家详细介绍了一个基于Python的桌面应用程序,使用了tkinter库来创建图形用户界面并通过requests库调用Open-MeteoAPI... 目录工具介绍工具使用说明python脚本内容如何运行脚本工具介绍这个天气查询工具是一个基于 Pyt

Ubuntu设置程序开机自启动的操作步骤

《Ubuntu设置程序开机自启动的操作步骤》在部署程序到边缘端时,我们总希望可以通电即启动我们写好的程序,本篇博客用以记录如何在ubuntu开机执行某条命令或者某个可执行程序,需要的朋友可以参考下... 目录1、概述2、图形界面设置3、设置为Systemd服务1、概述测试环境:Ubuntu22.04 带图

Java中的登录技术保姆级详细教程

《Java中的登录技术保姆级详细教程》:本文主要介绍Java中登录技术保姆级详细教程的相关资料,在Java中我们可以使用各种技术和框架来实现这些功能,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录1.登录思路2.登录标记1.会话技术2.会话跟踪1.Cookie技术2.Session技术3.令牌技