企業微信實現掃碼登錄

一:獲取掃碼登陸所需的參數:appid,secret,agentid

登錄企業微信:https://work.weixin.qq.com/

掃碼登錄文檔:https://work.weixin.qq.com/api/doc/90000/90135/90988

1:獲取appid

點擊我的企業就可以看到企業ID信息,這就是appid

appid.jpg

2:獲取secret和agentid

(1):點擊應用管理-》點擊創建應用

TIM截圖20200617112401.jpg

(2):應用創建完成之後我們就可以在應用中看到secret和agentid

TIM截圖20200617112433.jpg

二:上傳企業微信二維碼

(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",//自定義樣式鏈接,企業可根據實際需求覆蓋默認樣式,參數非必填
});

根據如上就可以顯示出企業微信的二維碼

image.png

三:掃碼回調接收

企業微信掃碼顯示後,手機使用企業微信進行掃碼確認後,這時候我們的回調地址會接收到企業微信的回調信息,回調信息裏有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;
}

根據如上我們就可以實現掃碼登錄功能了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章