关于二次验证(Oauth2)
首先要确保企业微信开启了二次验证
1.png
构造链接
2.png
关于这方面的东西太多了,可以去企业微信开发文档查看,这里不再多加赘述。
主要聊一下开发的部分。
应用于实际需求
仅仅是开启企业通讯录然后进行导入是不切实际的,不同公司数据库格式也不同,导出问题也是头疼。
幸好公司大手结合网上大佬给出的验证(在此膜拜一下云哥),实现了二次验证。
我们需要满足的需求
- 员工收到企业微信邀请
- 点击跳转到企业微信
- 企业微信跳转到我们自定义的信息录入界面
- 完成信息录入跳转回企业微信
话不多说,贴代码
本需求的实现采用php+mysql
首先掏出我们构造链接的php文档
reg.php
<?php
define("CORPID",""); //企业微信上的设置中的找到这个参数
define("CORPSECRET",""); //企业微信上的设置-权限管理-应用权限开发者凭据找这个参数
$token_access_url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=".CORPID."&corpsecret=".CORPSECRET;
$res = file_get_contents($token_access_url);
$arr_result = json_decode($res,true);
define("ACCESS_TOKEN",$arr_result['access_token']);
define("CODE", $_GET['code']);
define("state",$_GET['state']);
// define("EMPNO", $_REQUESET['username']);
// define("EMP_ID", $_REQUESET['pass']);
// echo "<script>alert('".EMPNO."');</script>";
$make_menu_url = "https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=".ACCESS_TOKEN."&code=".CODE."&agentid=0";
$res2 = file_get_contents($make_menu_url);
$arr_result2 = json_decode($res2,true);
define("USERID", $arr_result2['UserId']);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8">
<title>人员信息验证</title>
</head>
<body>
<div class="wrapper">
<div class="container">
<h1>人员信息验证</h1>
<FORM name="submit" action="index.php" method="POST">
<div class="enter">
<input type="text" placeholder="工号" name='username'>
<input type="password" placeholder="身份证号" name='pass'>
<input type="hidden" value= <?php echo ACCESS_TOKEN; ?> placeholder="access_token" name='access_token'>
<input type="hidden" value= <?php echo USERID; ?> placeholder="userid" name='userid'>
<input type="submit" value="确认" name="Submit" class="btn_submit">
</div>
</FORM>
</div>
</body>
</html>
此时已经实现了数据绑定跳转到index.php
index.php
<?php
$emp_no=$_POST['username'];
$shengfenzheng=$_POST['pass'];
$access_token=$_POST['access_token'];
$userid=$_POST['userid'];
$link = mysqli_connect('localhost','root','root','database');
$query=mysqli_query($link,"insert into wechatqiye(name_id,emp_no)value('$userid','$emp_no')");//找到与输入用户名相同的信息,注意要取出的信息有两项
if($query){
$send_url = "https://qyapi.weixin.qq.com/cgi-bin/user/authsucc?access_token=".$access_token."&userid=".$userid."";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $send_url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,FALSE);
curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (compatible; MSIE 5.01;Windows NT 5.0)');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch, CURLOPT_AUTOREFERER,1);
// curl_setopt($ch, CURLOPT_POSTFIELDS, $userid);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
$info = curl_exec($ch);
if(curl_errno($ch)){
echo 'Errno'.curl_error($ch);
}
curl_close($ch);
print_r($info);
echo "<script language=JavaScript>alert('驗證成功');</script>";
} else {
echo "<script language=JavaScript>alert('驗證失敗請重新認證');</script>";
}
?>
以上
网友评论