本文章将会基于企业微信开发文档扫码登录流程步骤
第一步请求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);就可以看返回的数据拉
本文章只为方便自己以后工作遇到同样的功能好复制粘贴