您的位置:首页 > 编程语言 > PHP开发

laravel php 微信扫码登录

2016-11-11 11:30 721 查看
参考来自 http://www.cnblogs.com/txw1958/p/scan-qrcode-login.html

自己做了微信登录 这个相当于笔记 仅供参考

微信扫码登录需要的数据是微信开放平台!!!

微信扫码登录需要的数据是微信开放平台!!!

微信扫码登录需要的数据是微信开放平台!!!

重要的事说三遍,之前一直用错误数据调试 

坑~ .. 

直接进入代码阶段

1 生产二维码 有两种方式

第一种方式是点击登录按钮进入一个微信给的的网页,网页内只放二维码 eg https://passport.yhd.com/wechat/login.do

第二种方式是将二维码嵌入网页某个div 脑补下样式 我不贴图了 我下面会用方式二

在需要放二维码的页面引入 http://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js 这个JS 然后如下代码

//获取登录二维码

$(document).on("click", ".noname-login", function () {//登录按钮触发事件

    $(".layer").removeClass("hide");

    var data = {};

    var html = template('login-box', data);

    var url = '{!!env("APP_URL")!!}logincallback/'+merchant.hash;

    var callbackUrl = encodeURIComponent(url);

    document.getElementById('layer-box').innerHTML = html;

    var timestamp = (new Date()).valueOf();

    var state = timestamp+Math.floor(Math.random()*100);

    var obj = new WxLogin({//之前的代码是点击按钮之后弹出登录弹框 然后实例化这个类 id表示放这个二维码的div的id

        id: "ewimg",

        appid: "{{env('WXOPEN_APP_ID')}}",

        scope: "snsapi_login",//扫码登录用这个参数 参数固定

        redirect_uri: callbackUrl,//扫码之后成功的回调

        state: state,//随机数

        style: "",

        href: ""

    });

})

2 编辑回调函数

扫描二维码成功之后 会得到一些参数 先看代码 这个函数我没贴完 只写到最终回去到微信用户数据 之后怎么处理这个数据大家懂得~

    public function logincallback(){   

        $app_id = '***********';

        $app_secret = '**********';

//这里需要拼接一个url 获取 access_token
//appid app_secret不做赘述  code为微信服务器返回的code  grant_type参数写法固定

        $url='https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$app_id.'&secret='.$app_secret.'&code='.$_GET['code'].'&grant_type=authorization_code';

        $ch = curl_init();

        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

        curl_setopt($ch, CURLOPT_URL, $url);

        $json =  curl_exec($ch);

        curl_close($ch);

        $arr=json_decode($json,1);

        //用获取到的access_token调用接口

//拼接URL的参数也不需要赘述了
        $url='https://api.weixin.qq.com/sns/userinfo?access_token='.$arr['access_token'].'&openid='.$arr['openid'].'&lang=zh_CN';

        $ch = curl_init();

        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

        curl_setopt($ch, CURLOPT_URL, $url);

        $json =  curl_exec($ch);

        curl_close($ch);

        $userinfo=json_decode($json,1);

//获取到userinfo 大工告成~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息