curPageURL(); $nonceStr = 'abcdefg&cits@123#'; $timeStamp = time(); $corpId = 'ding48bce8fd3957c96b'; $secret = '4I_TlkOUtWQ60tUYX_447WXM5mNX41q_Q03xtZJgvBOzMPzGbNKZZz_Bsv-0B9I1'; //缓存accessToken。accessToken有效期为两小时,需要在失效前请求新的accessToken(注意:以下代码没有在失效前刷新缓存的accessToken)。 $cookie_accessToken = 'Token_' . $agentId; $accessToken = isset($_COOKIE[$cookie_accessToken]) ? $_COOKIE[$cookie_accessToken] : false; if (empty($accessToken)) { $response = GET_HTTP("https://oapi.dingtalk.com/gettoken?corpid=$corpId&corpsecret=$secret"); if (empty($response)) { log_message('error', "accessToken gethttp"); return false; } $accessToken = json_decode($response)->access_token; setcookie($cookie_accessToken, $accessToken, time() + 7140, '/'); } $cookie_jsapi_ticket = 'Ticket_' . $agentId; $jsapi_ticket = isset($_COOKIE[$cookie_jsapi_ticket]) ? $_COOKIE[$cookie_jsapi_ticket] : false; if (empty($jsapi_ticket)) { $response = GET_HTTP("https://oapi.dingtalk.com/get_jsapi_ticket?type=jsapi&access_token=$accessToken"); if (empty($response)) { log_message('error', "jsapi_ticket gethttp"); return false; } $jsapi_ticket = json_decode($response)->ticket; setcookie($cookie_jsapi_ticket, $jsapi_ticket, time() + 7140, '/'); } $signature = sha1('jsapi_ticket=' . $jsapi_ticket . '&noncestr=' . $nonceStr . '×tamp=' . $timeStamp . '&url=' . $url); $config = array( 'url' => $url, 'nonceStr' => $nonceStr, 'agentId' => $agentId, 'timeStamp' => $timeStamp, 'corpId' => $corpId, 'signature' => $signature, 'accessToken' => $accessToken, ); $data['auth_config'] = json_encode($config); $this->load->view('welcome', $data); //print_r($data); } public function curPageURL() { $pageURL = 'http'; if (array_key_exists('HTTPS', $_SERVER) && $_SERVER["HTTPS"] == "on") { $pageURL .= "s"; } $pageURL .= "://"; if ($_SERVER["SERVER_PORT"] != "80") { $pageURL .= $_SERVER["SERVER_NAME"] . ":" . $_SERVER["SERVER_PORT"] . $_SERVER["REQUEST_URI"]; } else { $pageURL .= $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"]; } return $pageURL; } //$agentId 应用ID,用来判断应该跳转到哪里去 //$user_code 用户code,需要再次请求接口来获取用户详细信息 public function authOnSuccess($agentId,$accessToken, $user_code) { $response =GET_HTTP("https://oapi.dingtalk.com/user/getuserinfo?access_token=$accessToken&code=$user_code"); if (empty($response)) { log_message('error', "getuserinfo gethttp"); return false; } $userid = json_decode($response)->userid; $response =GET_HTTP("https://oapi.dingtalk.com/user/get?access_token=$accessToken&userid=$userid"); if (empty($response)) { log_message('error', "user gethttp"); return false; } $response= json_decode($response); if(!empty($response) && $response->errcode==0){ $username= $response->name; redirect("http://doc.mycht.cn/index.php?user/loginSubmit&name=$username&password=9Q7gJ3239aK_8LA"); }else{ print_r($response); } } }