乐趣区

企业微信实现扫码登录

一:获取扫码登陆所需的参数:appid,secret,agentid

登录企业微信:https://work.weixin.qq.com/

扫码登录文档:https://work.weixin.qq.com/api/doc/90000/90135/90988

1:获取 appid

点击我的企业就可以看到企业 ID 信息,这就是 appid

2:获取 secret 和 agentid

(1):点击应用管理 -》点击创建应用

(2):应用创建完成之后我们就可以在应用中看到 secret 和 agentid

二:上传企业微信二维码

(1):引入企业微信 js

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

(2):html

<div id="wx_login"></div>  

(3):扫码 js

window.WwLogin({  
    "id" : "wx_login",  
    "appid" : "XXX",//appid  
    "agentid" : "XXX",//agentid  
    "redirect_uri" :"XXX",// 回调地址,注意回调地址需要进行 urlencode  
    "state" : "XXXX",// 用于保持请求和回调的状态,授权请求后原样带回给企业。该参数可用于防止 csrf 攻击, 参数非必填  
    "href" : "XXXX",// 自定义样式链接,企业可根据实际需求覆盖默认样式,参数非必填  
}); 

根据如上就可以显示出企业微信的二维码

三:扫码回调接收

企业微信扫码显示后,手机使用企业微信进行扫码确认后,这时候我们的回调地址会接收到企业微信的回调信息,回调信息里有 code 参数,我们可以根据 code 获取扫码用户的一些基本信息,这里我使用 php 来实现,:

$state = $_GET['state'];  
// 判断显示扫码的 state 值和回调获取的 state 值是否相同  
if ($state == 'XXX') {  
// 根据 appid 和 secret 获取 access_token  
$appid = 'XXX';  
    $secret = 'XXX';  
    $url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid='.$appid.'&corpsecret='.$secret;  
    $token = $this->https_request($url);  
    $accessToken = $token['access_token'];  
    // 根据 code 和 access_token 获取成员信息  
    $code = $_GET['code'];  
    $url = 'https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token='. $accessToken .'&code=' . $code;  
    $usersinfo = $this->https_request($url);  
    // 判断获取成员信息是否成功  
    if ($usersinfo['errcode'] == 0) {if (isset($usersinfo['UserId'])) {  
    // 企业用户  
    // 我们可以根据用户信息实现扫码登录,具体代码不进行叙述  
    } else {// 非企业用户}  
    } else {echo '验证错误';}  
} else {echo '验证错误';}  

上面的代码使用了 https_request 方法,方法如下:

/**  
 * curl  
 */  
public function https_request($url){$curl=curl_init();  
    curl_setopt($curl, CURLOPT_URL, $url);  
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);  
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);  
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);  
    $data=json_decode(curl_exec($curl), true);  
    // $data=curl_exec($curl);  
    curl_close($curl);  
    return $data;  
}  

根据如上我们就可以实现扫码登录功能了

退出移动版