网站实现微信扫码登录(利用微信开放平台实现)

news2024/11/17 7:48:07

第一步:微信开放平台账户申请

网址:微信开放平台

1.首先我们要做的就是进入到微信开放平台申请一个开放平台账户,获得资质!

:注册需要准备营业执照、1-2个工作日审批、300元认证费

:注册之后,会给你提供微信id和微信密钥

第二步:申请网站应用名称

注册后进入管理中心>网站应用>创建网站应用:

 审核通过后,列表就会可以查看到这个网站应用,点击查看可以获取到appId 和appSecret了。

第三步:用网站应用里的appId   调用微信二维码  下面是代码(控制器方法)

 //请求登录二维码
    public function getLoginImg()
    {
        //请求登录二维码
        $appId = '***************';//你的appId
    //这里强调一下  网站应用的授权回调域只能是域名   在代码中调用二维码时写入域名里具体的回调接口
    //比如我这个  网站应用里的授权回调域写的是https://test.huin.com     但是请求二维码时要加上具体的回调接口:/admin/login/wechat  
        $redirectUri = 'https://test.huin.com/admin/login/wechat';//我这个地址是无效的  换成你们自己的
        $redirectUri = urlencode($redirectUri); // 对URL进行编码
        $scope = 'snsapi_login'; // 网页授权获取用户基本信息  固定的
        //这个状态你设置的是什么  回调给你的就是什么  可以用来区分那个模块的二维码 (比如我要做绑定后台账号  绑定的二维码我设置state=1  登录二维码我设置state=2  这个就可以很好区分开了)
        $state = 2; // 可自定义,用于保持请求和回调的状态
        // 构造授权URL   //这个地址是固定的可以直接用
        $url = "https://open.weixin.qq.com/connect/qrconnect?appid={$appId}&redirect_uri=
{$redirectUri}&response_type=code&scope={$scope}&state={$state}#wechat_redirect";

        // 重定向到授权URL(也就是跳转到展示二维码的页面)
        header("Location: {$url}");
        exit;
    }

请求出来二维码后手机微信扫描后会调到这个页面

点击允许后会带着code及你设置的state 调用回调域接口进行处理 如果是我的代码就会调用到这个接口【https://test.huin.com/admin/login/wechat】

 第四步:回调处理 代码(控制器方法)

    //授权回调接口
    public function wechat()
    {
         //回调到这个接口会带给你  code码和上一段代码中的state  【state你之前设置的是什么回调给你的就是什么】
        $code = $_GET['code']; // 获取code
        $state = $_GET['state']; // 获取code
        //这就是你网站应用里申请的appId appSecret 
        $appId = '***************';
        $appSecret = '****************************';
        // 构造请求URL 这个地址是固定的  可以直接用
        $tokenUrl = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={$appId}&secret={$appSecret}&code={$code}&grant_type=authorization_code";
        // 发送请求并获取结果
        $response = file_get_contents($tokenUrl);
        $data = json_decode($response, true); 
        // 提取access_token和openid      openid是唯一的可以拿来绑定后台账号  或者直接登录
        $accessToken = $data['access_token'];
        $openid = $data['openid'];
       }

网站应用审核通过后其实就两步:

一 是通过第一个方法使用appId 调用二维码  

二 手机授权后带这个code码和state 请求到你的回调域接口  这个接口就可以拿接收到的code和你网站应用上的appid,appSecret  请求这个用户的唯一的openid  拿着这个openid和access_token就可以存数据库     代码也可以做绑定后台账号 下次扫码直接登录

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Window逆向基础之逆向工程介绍

逆向工程 以设计方法学为指导,以现代设计理论、方法、技术为基础,运用各种专业人员的工程设计经验、知识和创新思维,对已有产品进行解剖、深化和再创造。 逆向工程不仅仅在计算机行业、各行各业都存在逆向工程。 计算机行业逆向工程 计算…

裸金属服务器与云服务器有什么区别?

近年来,随着云计算技术的迅速发展,裸金属和云服务器已成为企业部署业务的两种主要方式。 裸金属是指提供基础设施硬件环境,但不包含操作系统和中间件的计算资源服务。 而云服务器则是通过虚拟化技术将计算资源划分为多个虚拟机,可…

JDK1.8 安装并配置环境变量

一、Windows 配置 1 安装文件 jdk-8u401-windows-i586.exe 2 环境变量 JAVA_HOME C:\Program Files (x86)\Java\jdk-1.8 CLASSPATH .;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar; Path %JAVA_HOME%\bin 说明:Win7/Win8 中 Path 可能需要写成 ;%JAVA_HO…

【excel】统计单元格内数字/字符串的数量

文章目录 一、问题二、步骤(一)将A1中的数字分解出来,在不同的单元格中显示(二)统计每个数字出现的个数(三)去重 三、尾巴 一、问题 单元格中有如下数值:12345234534545&#xff0c…

01 背包(从二维数组到一维滚动数组)

问题描述: 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些)物品装入背包里物品价值总和最大。 二维dp数组01背包 1. 确定dp数组以及下标的含义 dp[i][j] 表…

Stable Diffusion写真完整教程

前言 最近自己对AI非常痴迷,并且今后也会一直在这个领域深耕,所以就想着先入门,因此花时间研究了一番,还好,出了点小成果,接下来给大家汇报一下。 AI绘画 提到AI绘画,大家可能立马会想到made…

男款内裤哪个品牌最好?男士内裤高能测评,选购攻略分享!

很多男性朋友的内裤都是穿到天荒地老的存在,但实际上如果一条内裤没有定期更换的话,存在的细菌就难以消除,从而可能导致出现健康问题,而且一条内裤没有定期更换,舒适性和透气性等方面都非常差! 定期更换内裤…

AI 入门:从 ChatGPT 开始

在信息泛滥的时代,AI 技术已经渗透到生活的各个方面,学习 AI 成为个人发展的必然趋势。而 ChatGPT 作为 AI 领域的佼佼者,无疑是开启学习之旅的最佳起点。它不仅提供了一个便捷的交流平台,更能显著提升信息处理效率。 本文将带领…

在 Python 的哪个版本之后,字典的添加顺序与键的顺序是一致的?

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 在 Python 的不同版本中,字典(dict)类型的行为发生了显著变化。在 Python 3.6 及之前的版本中,字典是无序的,这意味着字典在遍历时不能保证按…

硬盘架构原理及其算法RAID工作原理写惩罚

一、硬盘的架构以及寻址原理 硬盘工作原理: 硬盘寻址原理:逻辑顺序磁道、盘片、扇区(顺序CHS) 二、机械硬盘算法 读取算法 寻道算法 个人与企业适合的算法和寻道 个人使用的机械硬盘适合的寻道算法和读取算法是&#xff1a…

[Vision Board创客营]--使用openmv识别阿尼亚

文章目录 [Vision Board创客营]使用openmv识别阿尼亚介绍环境搭建训练模型上传图片生成模型 使用结语 [Vision Board创客营]使用openmv识别阿尼亚 🚀🚀五一和女朋友去看了《间谍过家家 代号:白》,入坑二刺螈(QQ头像也换…

杰发科技AC7840——软件Sent_HAL39X

0. 序 使用PWM模拟Sent测试下7840的软件sent功能。 参考链接:SENT协议应用笔记 - TechPlus汽车工坊的文章 - 知乎 SENT协议 1. Sent功能测试 使用提供的软件Sent代码在7840上测试,接收数据OK 2. 参考资料 3. 数据解析 我们个根据上述参考资料尝试解析…

商务英语口语成人考级外语培训之BECkao考级口语篇

在口语考试中,不管实际内容你能说出多少,但准备一些套话,至少还能撑撑场子你们说是不是? 内容阐述 描述事实 1.Im going to describe/present/explain/give you some information about... 2.Id like to say a few words about...…

【Go】Go Swagger 生成和转 openapi 3.0.3

本文档主要描述在 gin 框架下用 gin-swagger 生成 swagger.json 的内容,中间猜的坑。以及,如何把 swagger 2.0 转成 openapi 3.0.3 下面操作均在项目根目录下执行 生成 swagger 2.0 import swagger go get -u github.com/swaggo/gin-swagger go get …

提高静态住宅代理稳定性妙招

在数字化时代的浪潮中,静态住宅代理因其独特的优势,如固定的IP地址、更高的隐私保护性等,逐渐成为网络爬虫、数据分析等领域不可或缺的工具。然而,静态住宅代理的稳定性问题一直是用户关注的焦点。本文将为您揭示提高静态住宅代理…

分布式任务调度框架xxl-job使用手册

官网地址和文档地址:https://www.xuxueli.com/xxl-job/ 一、快速入门 1.1 下载源码 https://github.com/xuxueli/xxl-job https://gitee.com/xuxueli0323/xxl-job 下载完成后有以下模块 1.2 初始化数据库 官方指定mysql8.0,但我是mysql5.7 执行/xxl…

C++相关概念和易错语法(12)(迭代器、string容量调整)

1.迭代器(以string为例) (1)基本理解:在我们刚接触迭代器的时候,我们可以将迭代器理解为改造过的“指针”,这是一个新的类型,指向对应容器中的各个元素。我们可以像指针那样对迭代器…

朋友圈刷屏的粘土风格照片,你体验过了吗?

Remini 的粘土风格真的丑萌丑萌的! 从去年“妙鸭相机”的走红,到今年Remini的刷屏,其实可以看出大众对于图片趣玩的兴趣非常大! 一张普通的照片经过工具的处理,一下子变成新风格,让人眼前一亮。如果你也对…

【代码分享】使用HTML5的Canvas绘制编码说明图片

最急在工作中遇到一个需求,根据给定的编码生成编码说明,像下面这样的效果。 不同含义的编码用横杠分割,然后每个编码下面用箭头指明具体的含义。下面是我使用canvas实现的代码。具体的编码宽度大家可以根据实际情况进行调整,目前…

Excel如何设置密码保护【图文详情】

文章目录 前言一、Excel如何设置密码保护?二、Excel如何取消密码保护?总结 前言 在软件项目开发过程中,会输出很多技术文档,其中也包括保密级别很高的服务器账号Excel文档。为了确保服务器账号相关的Excel文档的安全性&#xff0…