IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> PHP 微信 扫码登录 pc网站 -> 正文阅读

[PHP知识库]PHP 微信 扫码登录 pc网站

第一步

准备工作:

微信开放平台,需要企业认证,个人无法实现,因为网站审核的时候要有公司盖章。

并且开发人员资质也是要公司资质。

要交300元的认证费。

审核过程挺快,第一天申请,第二天就可以,写代码了。

填写资料的时候 网站的域名 要写对,扫码回调的域名,就是网站的域名。

?第二步:

开始撸代码

官方文档:准备工作 | 微信开放文档

点击页面按钮调用展示二维码接口

/**
     * @title 展示微信二维码
     * @Author: Righter.Guo <righter.g@qq.com>
     * @Time: 2021/12/9 13:36
     */
    public function show_wxcode(Request $request)
    {
        
        //调用微信扫描
        //回调地址,扫码后,页面会自动跳转到这个链接。不需要前端轮询。
        $redirect_uri= $request->domain().'/admin/login/wx_callback';
        //该回调需要url编码
        $redirect_uri=urlencode($redirect_uri);
        //开放平台的id
        $appID=$this->appid;
        //写死,官方文档写的
        $scope="snsapi_login";
        //准备向微信发请求
        $url = "https://open.weixin.qq.com/connect/qrconnect?appid=" . $appID."&redirect_uri=".$redirect_uri."&response_type=code&scope=".$scope."&state=扫码后会原样返回给你#wechat_redirect";
        //请求返回的结果(实际上是个html的字符串)就是微信写好的一个二维码的HTML页面。
        $result = file_get_contents($url);

        //替换图片的src才能显示二维码,因为图片没有拼接微信域名,
        $result = str_replace("/connect/qrcode/", "https://open.weixin.qq.com/connect/qrcode/", $result);
        //此处注释的格式转化,是调试的时候 报错 ,乱码,转化后可以看到汉字报错
//        $result = iconv('gb2312', 'UTF-8//IGNORE', $result);
//        echo $result;
        
        //返回json数据,
        return JsonService::successfuljson('ok',$result); 


    }

接口返回的数据用layer的弹框,type=1,可以直接展示页面内容。

$('.submit').on('click',function (
        $.ajax({
            url:'show_wxcode',
            type:'post',
            data:postData,
            dataType:'json',
            success:function (d) {
                // console.log(d);
                if (d.code == 200){
                    //直接弹框出现二维码页面
                    layer.open({
                        type:1,
                        offset: '100px',
                        area: ['500px', '500px'],
                        content:d.data
                    });
                }else{
                    alert(d.msg);
                }

            }
        });
        return false;
    });

下图就是接口返回的页面,

用微信扫码后,页面会自动跳转到show_wxcode接口里设置的回调地址:wx_callback

public function wx_callback()
    {
        $code = $_GET["code"];
        $state = $_GET["state"];
        //开放平台id
        $appid = $this->appid; 
        //开放平台秘钥
        $secret = $this->secret; 
        //code是必须的,state我也有用,可以根据自己的业务传参
        if (!empty($code) && !empty($state)) {
            //有code
            //通过code获得 access_token + openid
            $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" . $appid
                . "&secret=" . $secret . "&code=" . $code . "&grant_type=authorization_code";
            $jsonResult = file_get_contents($url);
            $resultArray = json_decode($jsonResult, true);
//            $access_token = $resultArray["access_token"];
//            $openid = $resultArray["openid"];
            $unionid = $resultArray["unionid"];

            //此处是为了查看到底返回了些啥东西
            //file_put_contents('./wx_callback111.txt',$jsonResult);


            //通过access_token + openid 获得用户信息,此处根据官网资料,获取你想要的东西
//            $infoUrl = "https://api.weixin.qq.com/sns/userinfo?access_token=" . $access_token . "&openid=" . $openid;
//            $infoResult = file_get_contents($infoUrl);
//            file_put_contents('./wx_callback222.txt',$infoResult);
//            $infoArray = json_decode($infoResult, true);

            //下面自己的 业务逻辑

            

            //最后跳转到你想要的页面
            $this->redirect('index/index');

        }

    }

至此微信扫描登录pc功能完成。

有bug、疑问、建议,可以留言。

有帮助 可以给点打赏。感谢

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-12-13 12:35:45  更:2021-12-13 12:36:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/13 14:34:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码