欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  神坛PHP

php实现微信扫码登录

程序员文章站 2021-11-28 19:02:47
...

php实现微信扫码登录的方法:

1、通过js实例化一个对象;

2、在html中定义一个div并包含二维码;

3、在$(document).ready()内进行实例化即可。



1、后台发请求获取微信返回的扫码页面,这样子就会返回一个这样的页面,扫描后调用$redirect_uri

$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; //返回页面



2、内嵌JS显示:

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

    });

});





//回调

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);

     } }




相关标签: 登录

上一篇: 目录结构

下一篇: 数据库基本操作