整體流程是 ,參照騰訊企業郵的對外開放API , 傳遞client_id + client_secret就可以獲取到access_token , 拿着access_token+ 用戶的標識 , 去請求一個登陸地址 , 獲取到登陸地址直接跳轉過去就能登陸成功
1. 首先在管理后台 , 申請生成自己的client_id + client_secret
重置秘鑰 , 停用秘鑰都會使當前企業的舊秘鑰和access_token失效
2. 通過自定義規則生成簽名串
獲取所有get傳遞的參數值 , 使用字典序排序 , 拼接在一起 ,拼接上自己的秘鑰進行sha1加密 , 作為GET參數signature
<?php //從企管后台獲取到以下參數 $client_secret="af0c7c2ac7b5687d6c4ed5e6a2a7e058780c1aac"; $client_id="appdev.sinanet.com"; //生成簽名 $_GET['grant_type']='client_credentials'; $_GET['client_id']=$client_id; $_GET['ts']=time();//秒數時間戳 $args = array_values($_GET); sort($args, SORT_STRING); $args = implode($args); $sign = sha1($args . $client_secret); $_GET['signature']=$sign; //最終傳遞的GET參數 var_dump($_GET);
3. 獲取access_token接口
重新獲取token會使舊的token失效
GET /openapi/token?
grant_type=client_credentials&
client_id=appdev.sinanet.com&
ts=1587628159&
signature=ad90ca4f8395c679243c4264bd2159dd59a0f82b
{ "result": true, "errno": 0, "msg": "", "data": { "access_token": "e3ea1a05893f5906893a37c51e4458bdb7361794", "expire_in": 7200 } }
4. 通過access_token + 用戶標識 獲取本企業內的員工登陸地址 , 登陸地址是一次性的 , 過期時間300秒
GET /openapi/get_login_url?
access_token=e3ea1a05893f5906893a37c51e4458bdb7361794&
email=shihan2@xxxxx.com
{ "result": true, "errno": 0, "msg": "", "data": { "login_url": "http://xxx/cgi/openapi_login.php?ts=1587628586&authKey=7883171fa07d5a149ef5f8e4fd401c925286c2cf&email=shihan2@xxx.com", "expire_in": 300 } }
5.直接往登陸地址上跳 , 記錄cookie session等身份信息 , 再跳到真正的系統