小程序扫码登录 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

相关文章

Django调用外部Python程序的完整项目实战

《Django调用外部Python程序的完整项目实战》Django是一个强大的PythonWeb框架,它的设计理念简洁优雅,:本文主要介绍Django调用外部Python程序的完整项目实战,文中通... 目录一、为什么 Django 需要调用外部 python 程序二、三种常见的调用方式方式 1:直接 im

Spring Boot基于 JWT 优化 Spring Security 无状态登录实战指南

《SpringBoot基于JWT优化SpringSecurity无状态登录实战指南》本文介绍如何使用JWT优化SpringSecurity实现无状态登录,提高接口安全性,并通过实际操作步骤... 目录Spring Boot 实战:基于 JWT 优化 Spring Security 无状态登录一、先搞懂:为什

在DataGrip中操作MySQL完整流程步骤(从登录到数据查询)

《在DataGrip中操作MySQL完整流程步骤(从登录到数据查询)》DataGrip是JetBrains公司出品的一款现代化数据库管理工具,支持多种数据库系统,包括MySQL,:本文主要介绍在D... 目录前言一、登录 mysql 服务器1.1 打开 DataGrip 并添加数据源1.2 配置 MySQL

Springboot中JWT登录校验及其拦截器实现方法

《Springboot中JWT登录校验及其拦截器实现方法》:本文主要介绍Springboot中JWT登录校验及其拦截器实现方法的相关资料,包括引入Maven坐标、获取Token、JWT拦截器的实现... 目录前言一、JWT是什么?二、实现步骤1.引入Maven坐标2.获取Token3.JWT拦截器的实现4.

Mysql 驱动程序的程序小结

《Mysql驱动程序的程序小结》MySQL驱动程序是连接应用程序与MySQL数据库的重要组件,根据不同的编程语言和应用场景,MySQL提供了多种驱动程序,下面就来详细的了解一下驱动程序,感兴趣的可以... 目录一、mysql 驱动程序的概念二、常见的 MySQL 驱动程序1. MySQL Connector

java程序远程debug原理与配置全过程

《java程序远程debug原理与配置全过程》文章介绍了Java远程调试的JPDA体系,包含JVMTI监控JVM、JDWP传输调试命令、JDI提供调试接口,通过-Xdebug、-Xrunjdwp参数配... 目录背景组成模块间联系IBM对三个模块的详细介绍编程使用总结背景日常工作中,每个程序员都会遇到bu

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

90%的人第一步就错了! 顺利登录wifi路由器后台的技巧

《90%的人第一步就错了!顺利登录wifi路由器后台的技巧》登录Wi-Fi路由器,其实就是进入它的后台管理页面,很多朋友不知道该怎么进入路由器后台设置,感兴趣的朋友可以花3分钟了解一下... 你是不是也遇到过这种情况:家里网速突然变慢、想改WiFi密码却不知道从哪进路由器、新装宽带后完全不知道怎么设置?别慌

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom