PHP企业微信生成agentConfig注入应用的权限步骤
1、调用 wx.agentConfig需要引入 jwxwork sdk
<script src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script> <script src="https://open.work.weixin.qq.com/wwopen/js/jwxwork-1.0.0.js"></script>
2、配置文件:
wx.agentConfigwx.agentConfig({ corpid: '', // 必填,企业微信的corpid,必须与当前登录的企业一致 agentid: '', // 必填,企业微信的应用id (e.g. 1000247) timestamp: , // 必填,生成签名的时间戳 nonceStr: '', // 必填,生成签名的随机串 signature: '',// 必填,签名,见附录-JS-SDK使用权限签名算法 jsApiList: ['selectExternalContact'], //必填,传入需要使用的接口名称 success: function(res) { // 回调 }, fail: function(res) { if(res.errMsg.indexOf('function not exist') > -1){ alert('版本过低请升级') } } });
3、以上配置获取前提:
(1)获取accessToken
(2)获取ticket
(3)获取当前URL
(4)获取当前时间戳:timestamp
(5)获取签名:signature签名生成规则如下:
参与签名的参数有四个: noncestr(随机字符串), jsapi_ticket(如何获取参考“获取企业jsapi_ticket”以及“获取应用的jsapi_ticket接口”), timestamp(时间戳), url(当前网页的URL, 不包含#及其后面部分) 将这些参数使用URL键值对的格式 (即 key1=value1&key2=value2…)拼接成字符串string1。
有两个注意点:1. 字段值采用原始值,不要进行URL转义;2. 必须严格按照如下格式拼接,不可变动字段顺序。 jsapi_ticket=JSAPITICKET&noncestr=NONCESTR×tamp=TIMESTAMP&url=URL 然后对string1作sha1加密即可。
4、代码实现:
<?php $appid = "wwwxssacy554cacvd"; //企业信息中的ID $SECRET = "NHjVLxxxccdpqCH4feADLAOHr2hJHj20"; //应用secret $agentid = "200225"; // 1、获取access_token $url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=".$appid."&corpsecret=".$SECRET; $result = getJson($url); // 通过code和access_token获取userid和user_ticket $access_token = $result['access_token']; // 2、获取企业的jsapi_ticket $res3 = getJson("https://qyapi.weixin.qq.com/cgi-bin/ticket/get?access_token=".$access_token."&type=agent_config"); // var_dump(json_encode($res3));exit; // $res3 = getJson("https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=".$access_token); if($res3['errcode']==0){ // 3、生成签名 $jsapi_ticket=$res3['ticket']; $noncestr = noncestr(16); $timestamp = time(); $surl = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];; $signatureString = "jsapi_ticket=".$jsapi_ticket."&noncestr=".$noncestr."×tamp=".$timestamp."&url=".$surl; $signature = sha1 ( $signatureString ); //对signatureString进行sha1签名,得到signature: // var_dump($signature);exit; $wxagentConfig = wxagentConfig($appid,$agentid,$timestamp,$noncestr,$signature,$surl,$jsapi_ticket); // var_dump($wxagentConfig);exit; } // 生成企业微信所需字段 function wxagentConfig($appid,$agentid,$timestamp,$noncestr,$signature,$surl,$jsapi_ticket){ $wx['corpid'] =$appid; // 必填,企业微信的corpid,必须与当前登录的企业一致 $wx['agentid'] = $agentid; // 必填,企业微信的应用id (e.g. 1000247) $wx['timestamp'] = $timestamp; // 必填,生成签名的时间戳 $wx['nonceStr'] = $noncestr; // 必填,生成签名的随机串 $wx['signature'] = $signature;// 必填,签名,见附录-JS-SDK使用权限签名算法 return $wx; } // 生成签名的随机串 function nonceStr($length){ $str = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJK1NGJBQRSTUVWXYZ';//随即串,62个字符 $strlen = 62; while($length > $strlen){ $str .= $str; $strlen += 62; } $str = str_shuffle($str); return substr($str,0,$length); } function getJson($url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($ch); curl_close($ch); return json_decode($output, true); } ?>
5、使用方法:
<script> wx.agentConfig({ beta: true, // 必须这么写,否则wx.invoke调用形式的jsapi会有问题 debug: true, corpid: '<?php echo $wxagentConfig["corpid"];?>', // 必填,企业微信的corpid,必须与当前登录的企业一致 agentid: '<?php echo $wxagentConfig["agentid"];?>', // 必填,企业微信的应用id (e.g. 1000247) timestamp: '<?php echo $wxagentConfig["timestamp"];?>', // 必填,生成签名的时间戳 nonceStr: '<?php echo $wxagentConfig["nonceStr"];?>', // 必填,生成签名的随机串 signature: '<?php echo $wxagentConfig["signature"];?>',// 必填,签名,见附录-JS-SDK使用权限签名算法 jsApiList: ['selectExternalContact','saveApprovalSelectedItems','getApprovalSelectedItems'], //必填,传入需要使用的接口名称 success: function(res) { // alert(11222); // 回调 alert(JSON.stringify(res)) }, fail: function(res) { if(res.errMsg.indexOf('function not exist') > -1){ alert('版本过低请升级') } alert(JSON.stringify(res)) } }); </script>
以上是PHP企业微信生成agentConfig注入应用的权限步骤,供大家参考和使用。
附API错误状态码查询地址:https://open.work.weixin.qq.com/devtool/query?e=80001
文章评论(0)