php怎么实现微信扫码登录

本文操作环境:windows10系统、PHP 7、thinkpad t480电脑。

微信已经成为我们日常生活中必不可少的一部分,为了让更多的用户更加方便地使用微信及相关产品,微信扫一扫功能越来越普遍。那么如果我们要自己实现这个功能该如何做呢?

再给出具体的实现代码之前,我们先来分析下微信扫码登录的流程。

首先我们必须要把二维码放在页面上显示出来,二维码是有失效时间以及失效状态的,一旦你扫过一次二维码或者在某段时间内没有扫描页面上的二维码,那么这个二维码也就失效了。微信官网给我们提供了两种方式来显示二维码,一种是后台发请求返回一个新的页面,另一种是前端js实例化二维码内嵌在自己的页面上。很显然第一种方式比较简单方便,但是在实际的项目中两种方式都会使用到,既然如此我们就把这两种方式都说明一下。

后台发请求获取微信返回的扫码页面

$redirect_uri="Http://你的微信开放平台绑定域名下处理扫码事件的方法";
$redirect_uri=urlencode($redirect_uri);//该回调需要url编码
$appID="你的appid";
$scope="snsapi_login";//写死,微信暂时只支持这个值
//准备向微信发请求
$url = "https://open.weixin.qq.com/connect/qrconnect?appid=" . $appID."&redirect_uri=".$redirect_uri."&response_type=code&scope=".$scope."&state=STATE#wechat_redirect";
//请求返回的结果(实际上是个html字符串)
$result = file_get_contents($url);
//替换图片的src才能显示二维码
$result = str_replace("/connect/qrcode/", "https://open.weixin.qq.com/connect/qrcode/", $result);
return $result; //返回页面

这样子就会返回一个这样的页面,扫描后调用$redirect_uri

da6c1c1e556dde4df850c8d04c1f556.png

内嵌JS显示:

这里就是通过js端实例化一个对象即可,首先在<head>标签内添加如下js文件,

<script src="http://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script>

其次在html中定义一个div包含二维码,

<div id="login_container"></div>

最后在$(document).ready()内进行实例化: 

$(document).ready(function()
{
    var obj = new WxLogin
    ({
        id:"login_container",//div的id
        appid: "你的appid",
        scope: "snsapi_login",//写死
        redirect_uri:encodeURI("你的处理扫码事件的方法") ,
        state: "",
        style: "black",//二维码黑白风格        
        href: "https://某个域名下的CSS文件"
    });
});

注意其中href里指向的css文件必须放在https协议下才能引用的到,不然页面上就是默认样式(显示上是一个比较大的二维码,你无法调节二维码的大小,位置,太痛苦了)。最后部分页面大概长成这样,这里的二维码大概只有140px:

506b24882f9692bf80fb87e653e9421.png

好了,二维码出现在页面上了,接下来我们就要大概的讲讲扫码的逻辑了,整个流程大概分为5步:

5600c4fb5c927be8d3ff7166b022591.png

走完这五步你就拿到扫码用户的所有信息了,之后再写上自己需要的的代码逻辑即可(如重定向或者登陆),在代码里的表现形式如下:

//回调
public function codeinfo()
{
        $code = $_GET["code"];
        $appid = "你的appid";
        $secret = "你的secret";
        if (!empty($code))  //有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"];

            //通过access_token + openid 获得用户所有信息,结果全部存储在$infoArray里,后面再写自己的代码逻辑
            $infoUrl = "https://api.weixin.qq.com/sns/userinfo?access_token=" . $access_token . "&openid=" . $openid;
            $infoResult = file_get_contents($infoUrl);
            $infoArray = json_decode($infoResult, true);
     } }

相信大家在写完上面的代码之后已经对扫一扫登录的流程很清楚了,其实本质上就是多个微信接口的配合调用而已。

--结束END--

本文标题: php怎么实现微信扫码登录

本文链接: https://www.lsjlt.com/news/131.html (转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢

  • php怎么实现微信扫码登录

    php实现微信扫码登录的方法:1、通过js实例化一个对象;2、在html中定义一个div并包含二维码;3、在$(document).ready()内进行实例化即可。
    阅读数:714 php 微信
  • PHP怎么实现扫码登录QQ

    PHP实现扫码登录QQ的方法:1、通过“public function QRcode(){...}”方法获取登录验证码;2、动态传入QQ微信的类名字符串快速实例化;3、生成二维码并轮询检测二维码状态即可。
    阅读数:813 qq php
  • php怎么实现微信登录

    php实现微信登录的方法:1、经用户同意授权,获取code;2、通过code换取网页授权access_token;3、获取用户信息。
    阅读数:839 php 微信
  • 怎么用PHP实现支付宝和微信扫码在线支付的功能

    本篇内容介绍了“怎么用PHP实现支付宝和微信扫码在线支付的功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!PHP支付宝和微信扫码在线支付实
    阅读数:146 php
  • php怎么实现扫一扫功能

    php实现扫一扫功能的方法:1、生成二维码,生成一个唯一标识uuid,并使用redis保存临时信息;2、通过一个长连接维持用户请求和服务器之间的通信;3、使用手机扫描二维码获取唯一标识uuid,并判断该标识是否有效。
    阅读数:909 php 扫一扫
  • php+laravel 扫码二维码签到功能

    最近新开发个项目基于微信二维码来实现公司签到业务需求,需要做哪些相关配置呢,接下来通过本文给大家详细介绍下,对php二维码签到功能感兴趣的朋友一起学习下吧
  • php如何实现验证码登录

    php实现验证码登录的方法:1、创建html页面显示验证码;2、创建php文件,接受前端页面传入的验证码信息;3、创建验证码生成PHP文件。
    阅读数:153 php 验证码
  • php微信授权登录实例讲解

    这篇文章主要介绍了php微信授权登录实例讲解,微信授权登录是比较常用的功能,有需要的同学可以研究下
  • php怎么实现简单密码登录

    php实现简单密码登录的方法:1、创建login.html;2、创建login.php;3、处理用户登录信息;4、设置默认主页index.php;5、创建注销页面即可。
    阅读数:800 php
  • php怎么实现图片验证码

    php实现图片验证码的方法:1、加载GD扩展;2、创建画布并在画布上增加内容;3、通过imagepng保存输出;4、释放资源;5、生成随机验证码数据即可。
    阅读数:244 php
  • php怎么实现数字验证码

    php实现数字验证码的方法:1、通过imagecreatetruecolor函数实现验证码底图;2、通过imagecolorallocate方法实现数字验证码;3、增加干扰元素;4、存储验证信息即可。
    阅读数:487 php
  • php怎么实现登录失败次数限制

    php实现登录失败次数限制的方法:1、创建一个表用于负责记录用户登录的信息;2、查看密码错误的记录;3、在相同IP下,同一个用户在30分钟内密码错误次数达到设定的错误次数,就不让用户登录。
    阅读数:935 PHP 登录
  • php登录失败页面提示怎么实现

    php实现登录失败页面提示的方法:1、创建login.php登录页面;2、通过error值,确定提示信息;3、通过“function chkinput($x,$y){...}”方法判断是否登录成功并跳转到相应的提示页面即可。
    阅读数:653 登录失败 php
  • php登录不用数据库怎么实现

    php登录不用数据库的实现方法:1、创建好一个index.php文件;2、创建form登录表单;3、通过“if($user=='user' && $pwd=='pwd'){...}”方法实现用户判断登录即可。
    阅读数:150 php 登录
  • php 怎么实现七天免登录

    php实现七天免登录的方法:1、在前端创建一个用户选择七天免登录的按钮;2、在后端中,根据用户提交的用户名和密码查询到用户的id;3、将用户id存入cooike中;4、设置七天的过期时间即可。
    阅读数:130 登录 php
  • php 怎么实现微信增加菜单

    php实现微信增加菜单的方法:1、通过微信公众账号获取到appid和appsecret;2、通过获取凭证接口获取到access_token;3、通过“function createMenu($data){...}”方法创建自定义菜单即可。
    阅读数:419 php 微信 菜单
  • php 怎么实现七天自动登录

    php实现七天自动登录的方法:1、新建show.php文件实现登录页面;2、创建function.php文件实现加密cookie;3、设置用户名和密码的判断;4、开启session并实现一周内自动登录即可。
    阅读数:115 PHP
  • 如何解决php微信登录41001错误问题

    php微信登录41001错误的解决办法:1、查看日志;2、通过stripslashes去掉反斜杠;3、通过json_decode进行解码即可。
    阅读数:496 php
  • php怎么实现发送验证码的功能

    php实现发送验证码功能的方法:1、创建好HTML和js文件;2、创建“Msm.php”文件,内容为“public function sendmsm(){...}”;3、通过CURL发送HTTP请求即可。
    阅读数:181 php 验证码
  • php怎么将字母转成ascii码

    在php中,可以使用ord()函数来将字母转成ascii码,该函数能以整数形式来返回单个字符或字符串中第一个字符的ASCII值,语法为“ord("需要转换的字母")”。
    阅读数:556 php 字母转ascii码