1. 首先需要在微信公众平台或开放平台中创建应用,并获取到AppID和AppSecret。

  2. 在pbootcms中创建一个自定义模板页面(例如:wechat_login.html),并在该页面中添加以下代码,用于生成微信扫码登录的二维码:

<!-- 引入jquery库 -->
<script src="https://cdn.bootcss.com/jquery/3.5.1/jquery.min.js"></script> <!-- 生成二维码的canvas -->
<div id="qrcode"></div> <!-- 用于轮询检查扫码状态 -->
<div id="check_login"></div> <script>
$(function(){
// 生成二维码
var url = "https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_login&state=STATE#wechat_redirect";
url = url.replace("APPID", "你的AppID");
url = url.replace("REDIRECT_URI", encodeURIComponent("http://你的域名/wechat_callback.php"));
$('#qrcode').qrcode({width: 200,height: 200,text: url}); // 轮询检查扫码状态
setInterval(function(){
$.ajax({
url: "http://你的域名/check_login.php",
dataType: "json",
success: function(data){
if(data.code == 0){
alert("登录成功!");
window.location.reload();
}
}
});
}, 3000);
});
</script>
  1. 创建一个名为wechat_callback.php的文件,用于接收微信的回调请求并获取用户的access_token和openid。代码如下:
<?php

// 获取微信授权码
$code = $_GET['code']; // 获取access_token和openid
$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=APPSECRET&code=".urlencode($code)."&grant_type=authorization_code";
$url = str_replace("APPID", "你的AppID", $url);
$url = str_replace("APPSECRET", "你的AppSecret", $url);
$json = file_get_contents($url);
$data = json_decode($json, true);
$access_token = $data['access_token'];
$openid = $data['openid']; // 将access_token和openid存储在session中
session_start();
$_SESSION['access_token'] = $access_token;
$_SESSION['openid'] = $openid; // 跳转回原页面
header('Location: http://你的域名/wechat_login.html');
  1. 创建一个名为check_login.php的文件,用于检查用户是否已经扫码并确认登录。代码如下:
<?php

// 获取session中的access_token和openid
session_start();
$access_token = $_SESSION['access_token'];
$openid = $_SESSION['openid']; // 检查access_token和openid是否存在
if(empty($access_token) || empty($openid)){
echo json_encode(array('code' => -1, 'msg' => '未登录'));
exit();
} // 检查用户是否已经扫码并确认登录
$url = "https://api.weixin.qq.com/sns/auth?access_token=".urlencode($access_token)."&openid=".urlencode($openid);
$json = file_get_contents($url);
$data = json_decode($json, true);
if($data['errcode'] == 0){
echo json_encode(array('code' => 0, 'msg' => '已登录'));
exit();
} else {
echo json_encode(array('code' => 1, 'msg' => '未确认登录'));
exit();
}

完成以上步骤后,用户在访问wechat_login.html页面时,将会看到一个二维码,用户可以使用微信扫描二维码进行登录。同时,check_login.php文件会定时检查用户的登录状态,并在用户确认登录后,将access_token和openid存储在session中,以便于后续的操作。

pbootcms对接微信扫码登录代码核心片段和步骤(前后端)的更多相关文章

  1. PHP对接微信扫码登录

    1.PC端扫码登录 如果你将微信小程序和公众账号绑定同一个微信开放平台,那么他们各自的接口返回有一个参数unionid是相同的(没有绑定微信公众账号就没有):那么你就可以使用这个unionid来做业务 ...

  2. Web应用多账号系统设计及微信扫码登录实现

    Web应用多账号系统设计及微信扫码登录实现 1   前言概述 公司对功能测试,性能测试,安全测试等等都做了比较好的自动化后,急需要一个MIS系统来统一管理这些结果及报表. 此MIS系统特点如下: 仅内 ...

  3. Vue+abp微信扫码登录

    最近系统中要使用微信扫码登录,根据微信官方文档和网络搜索相关文献实现了.分享给需要的人,也作为自己的一个笔记.后端系统是基于ABP的,所以部分代码直接使用了abp的接口,直接拷贝代码编译不通过. 注册 ...

  4. php微信开放平台--第三方网页微信扫码登录(OAuth2.0)

    第一.OAuth2.0 OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. 允许用户提 ...

  5. Android (微信扫码登录) 获取微信二维码+扫码登录

    话不多说  直接上菜! 一.因为是微信扫码登录,所有要在微信开放平台  微信开放平台 (qq.com) 进行注册----- 如下 1.资源中心 里面也有详细的官方讲解,里面也有demo  可以下载 2 ...

  6. 微信开放平台开发——网页微信扫码登录(OAuth2.0)

    1.OAuth2.0 OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. 允许用户提供 ...

  7. 第三方登录:微信扫码登录(OAuth2.0)

    1.OAuth2.0 OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. 允许用户提供 ...

  8. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-6.微信扫码登录回调本地域名映射工具Ngrock

    笔记 6.微信扫码登录回调本地域名映射工具Ngrock         简介:讲解微信扫码回调本地域名ngrock讲解 1.为什么要用这个,微信扫码需要配置回调,需要配置对应的域名          ...

  9. C#开发微信门户及应用(45)--微信扫码登录

    在前面随笔<C#开发微信门户及应用(41)--基于微信开放平台的扫码登录处理>介绍了基于微信开放平台接口实现的微信扫码直接登录的过程.本篇介绍对扫码登录的一些改进和处理,以便更方便应用在实 ...

  10. Swoole 的微信扫码登录

    微信应用的便捷,扫码登录方式越来越被现在的应用所使用.它因为不用去记住密码,只要有微信号即可方便快捷登录.微信的开放平台原生就有支持扫码登录的功能,不过大部分人还是在用公众平台,所以扫码登录只能自行实 ...

随机推荐

  1. spring aop切面说明

    execution:处理Join Point的类型,例如call.execution (* android.app.Activity.on**(..)):这个是最重要的表达式,第一个*表示返回值,*表 ...

  2. ansible批量采集、批量互信、批量复制、分发文件

    一.先说一下用ansible批量采集机器信息的实现办法: 1.先把要采集的机器信息的IP添加到主节点机器的/etc/ansible/hosts里面: 2.在/etc/ansible/hosts里面添加 ...

  3. Vue 相关整理

    一 谈谈对 keep-alive 的了解? keep-alive 是Vue内置的一个组件,可以使被包含的组件保留状态,避免重新渲染,其有以下特性: * 一般结合路由和动态组件一起使用,用于缓存组件: ...

  4. 垃圾回收之三色标记法(Tri-color Marking)

    关于垃圾回收算法,基本就是那么几种:标记-清除.标记-复制.标记-整理.在此基础上可以增加分代(新生代/老年代),每代采取不同的回收算法,以提高整体的分配和回收效率. 无论使用哪种算法,标记总是必要的 ...

  5. # SpringBoot使用Validation校验参数 ##

    SpringBoot使用Validation校验参数 一.简介 参考 (14条消息) 1. 不吹不擂,第一篇就能提升你对Bean Validation数据校验的认知_@decimalmax和@max_ ...

  6. ​KubeSphere离线无网络环境部署

    KubeSphere离线无网络环境部署 KubeSphere 是 GitHub 上的一个开源项目,是成千上万名社区用户的聚集地.很多用户都在使用 KubeSphere 运行工作负载.对于在 Linux ...

  7. kubernetes核心实战(一)--- namespace

    kubernetes核心实战 1.资源创建方式 命令行创建 yaml文件创建 2.namespace 命名空间(namespace)是Kubernetes提供的组织机制,用于给集群中的任何对象组进行分 ...

  8. [Linux]监控外部用户登录及外部主机连接情况

    1 外部用户/外部主机 /var/log 在CentOS系统上,用户登录历史存储在以下这些文件中: /var/log/wtmp 用于存储系统连接历史记录被last工具用来记录最后登录的用户的列表 /v ...

  9. Vue启用报错 RangeError: Invalid typed array length: -4095

    近期开发的前端项目项目启用失败,记录下修复过程 RangeError: Invalid typed array length: -4095 错误原因:node版本问题,安装10.x.x 即可 重新安装 ...

  10. C# System.lnvalidOperationException:"A second operation started on this context before a previousoperation completed. This is usually caused by different threads using the same instance ofDbContext...

    与上一篇问题一样,只是错误不一样,DbContext 不支持并发请求,每个数据库操作都使用await就可以了