laravel 企业微信扫码登录

文档:点击打开企业微信开发文档链接

本文章将会基于企业微信开发文档扫码登录流程步骤

第一步请求code

请求code有两种方法,本文章只讲将企业微信登录二维码内嵌到自己页面这种。

第一步骤


在视图中引用以下JS文件

<script type="text/javascript" src="http://rescdn.qqmail.com/node/ww/wwopenmng/js/sso/wwLogin-1.0.0.js"></script>

然后第二步骤

文档把每个参数都说得很明白,有两个参数可以选择带与不带,分别是state,href,state是防止csrf攻击的,所以处于安全考虑最好还是带上。href是二维码样式,根据自己需求,不过需要是https协议。本文章基本带上state参数,href不带。

首先在登录页面对应控制器写上

$appid = 'XXX';
$agentid = 'XXX';
$url = urlencode(url('login/scanlogin'));
//生成唯一随机串防CSRF攻击
$state  = md5(uniqid(mt_rand(), TRUE));
//存到SESSION
$request->session()->put('state',$state);
$WwLogin = ['appid'=>$appid,'agentid'=>$agentid,'url'=>$url,'state'=>$state];
$assign = [
    'qywxcode' => $WwLogin
];
return view('login',$assign);

然后在登录页面视图写上

<!-- 企业微信扫码登录容器DIV -->
<div id="wx_reg"></div>
window.WwLogin({
        "id" : "wx_reg",  
        "appid" : "{{ $qywxcode['appid'] }}",
        "agentid" : "{{ $qywxcode['agentid'] }}",
        "redirect_uri" : "{{ $qywxcode['url'] }}",
        "state" : "{{ $qywxcode['state'] }}",
        //"href" : "",
});

然后第二步通过code获取用户信息

在重定向的地址,对应页面的控制器写上

$code = $request->input('code');
$state = $request->input('state');
if (!$request->session()->has('state')) {
    echo '非法访问';
    exit();
}
//验证CSRF攻击
if($state != session("state")){
    echo '黑客攻击,CSRF';
    exit();
}

然后发起请求通过code获取用户信息,把得到的对应参数填进去

$url = "https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=ACCESS_TOKEN&code=CODE"
然后CURL走起
$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_TIMEOUT, 500);
// 为保证第三方服务器与微信服务器之间数据传输的安全性,所有微信接口采用https方式调用,必须使用下面2行代码打开ssl安全校验。
// 如果在部署过程中代码在此处验证失败,请到 http://curl.haxx.se/ca/cacert.pem 下载新的证书判别文件。
//验证出错,暂时改为false
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_URL, $url);
$res = curl_exec($curl);
curl_close($curl);

这是var_dump($res);就可以看返回的数据拉

本文章只为方便自己以后工作遇到同样的功能好复制粘贴



猜你喜欢

转载自blog.csdn.net/qq_38375394/article/details/79669581