[本文所描述的内容具有一定的时效性,请以实际开发所处环境为准]
在微信企业号开发(1)--基础入门中,我们已经学习了,我们的程序结构应该如何设计。接下来,我们会按照微信企业号开发者接口文档的顺序,逐一介绍其功能实现。另外,由于博主开发方向调整,开发者接口文档中的所有内容,不会全部列出。对于相同实现原理的部分,仅仅给出一个示例即可,还请各位观众老爷们见谅,但不会影响其他文章的更新。敬请期待!
-------------------------------------------------------------------------------------------------------------------------------------
开始我们的干货部分吧!
1.首先我们打开微信企业号开发者接口文档:http://qydev.weixin.qq.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5
【特别特别提醒,在开发过程中,不尽要遵照企业号的开发者文档,还请遵守公众平台开发者开发文档,理由嘛,一想便知。特别是:其中关于频率,token,错误返回码等内容。请读者们留意。】
2.在企业号开发者文档中,欢迎页面请自行阅读,我们直接来看第二条:建立连接。本文中,我们先学习如何主动调用的连接。
[1]在这里,我把企业号开发者文档中的内容,以截图的内容提供给大家,详细内容还请访问上面地址所指向的文档。
下图中,请仔细阅读理解,CorpID,Secret,AccessToken的概念,以及他们之间的关系,权限的概念等。
[2]了解了这些概念之后,我们来看看如何获取参数,及设置权限。
a.首先,我们打开公众平台管理界面,进入设置选项界面,并且将滚动条拖到底部。发现我们要找的权限管理选项。
b.点击权限管理所在行。会进入下图所示界面。此时,如果没有管理组,请新建一个管理组,新建流程按照提示操作即可。完成之后,能够看到下图所示界面。
c.我们点击上图中的管理组下的“1”选项,见到下图所示界面。这里我们重点关注最下方的CorpID,Secret两个参数。其余的参数设置,还请看官们自己动手设置一下,便知道这些不同设置的差异点。
d.将上面的两个参数记录下来,以备后面使用。请注意,这两个参数请妥善保存,对于一个企业号而言,这两个参数再结合上图的权限设置就能控制企业号的运行,使用或保存不当都有可能会导致当前企业号信息的泄露,存在极大的安全隐患。因此,建议在实际使用中,做好这些重要的参数保密性。
[3]到此,我们的参数准备就完成了,接下来,开始我们正式的开发工作。在下面,以及后续的文章中,已经足够详细的介绍开发的细节,便不再介绍诸如工程建立等最基本的操作。我们只会简单列出操作步骤,还请各位看官亲自动手尝试开发。
a.为了后续的开发,我们先建立一个web工程,但是本文中我们不会使用web特性。
b.新建一个具体的类,用于我们获取AccessToken。
c.查看企业号开发者文档中AccessToken的获取部分的内容,如下图:
d.在本例中,我们演示使用JAVA的HttpURLConnection方式实现获取这两个参数。下面所示的方法,我们是按照通用的get、post实现的。我们获取accesstoken时,可是不使用第三个参数。那么实际使用时我们需要将下列参数传递至方法中:
requestUrl:https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=id&corpsecret=secrect【请使用上面我们获取的两个参数进行替换】
requestMethod:get【开发者手册中已经明确说明为:get】
另外,我们使用的JSONOBject作为结果保存方式,JSONObject的jar包,本例中使用json-lib-2.3-jdk15.jar,请读者自行下载,后续我们也会介绍这个jar中的方法如何使用等。
[代码不严谨之处,还请积极留言!]
@Override public JSONObject HttpRequest(String requestUrl, String requestMethod, String outputStr) { JSONObject jsonObject = null; StringBuffer buffer = new StringBuffer(); OutputStream out = null; InputStream input = null; InputStreamReader inputReader = null; BufferedReader reader = null; HttpURLConnection connection = null; try { // 建立连接 URL url = new URL(requestUrl); connection = (HttpURLConnection) url.openConnection(); // 设置http头部信息 connection.setDoOutput(true); connection.setDoInput(true); connection.setUseCaches(false); connection.setRequestMethod(RequestMethod); // 写入消息实体 if (outputStr != null) { out = connection.getOutputStream(); out.write(outputStr.getBytes("UTF-8")); } // 流处理 input = connection.getInputStream(); inputReader = new InputStreamReader(input, "UTF-8"); reader = new BufferedReader(inputReader); String line; while ((line = reader.readLine()) != null) { buffer.append(line); } jsonObject = JSONObject.fromObject(buffer.toString()); } catch (Exception e) { //日志处理等,请自行实现 } finally { try { if (outputStr != null) { out.close(); } // 关闭连接、释放资源 if (reader != null) { reader.close(); } if (inputReader != null) { inputReader.close(); } if (input != null) { input.close(); } input = null; connection.disconnect(); } catch (Exception e) { //日志处理等,请自行实现 } } return jsonObject; }
e.我们运行这个方法,正常情况下,已经能够得到微信给我们返回的AccessToken。如果发生错误,请查看微信开发者文档中关于全局返回码的说明部分。
-------------------------------------------------------------------------------------------------------------------------------------
至此,我们在主动调用模式下为了调用微信服务接口的准备工作已经基本完成。
特别说明:
微信接口文档可能处于变动之中,请一定参照最新版的开发文档进行开发。
参考资料:
[1]微信公众平台开发者文档:http://mp.weixin.qq.com/wiki/home/index.html
[2]企业号开发者接口文档:http://qydev.weixin.qq.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5