微信企业号开发一:主动调用模式之TOKEN申请

来源:互联网 发布:ubuntu虚拟机上网设置 编辑:程序博客网 时间:2024/05/20 10:10

微信企业号开发,数据访问格式分为以下三种:

1、企业应用调用企业号提供的接口,管理或查询企业号后台所管理的资源、或给成员发送消息等,以下称主动调用模式

2、企业号把用户发送的消息或用户触发的事件推送给企业应用,由企业应用处理,以下称回调模式

3、用户在微信中阅读企业应用下发的H5页面,该页面可以调用微信提供的原生接口,使用微信开放的终端能力,以下称JSAPI模式

官方文档地址:http://qydev.weixin.qq.com/wiki/index.php

现在我们来看一下主动调用模式的AccessToken申请,为什么需要申请AccessToken呢?文档指出

---------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------

主动调用是最基本的连接模式,当你的应用调用企业号时,需使用https协议、Json数据格式、UTF8编码,访问域名为https://qyapi.weixin.qq.com,数据包不需要加密

在每次主动调用企业号接口时需要带上AccessToken参数,

AccessToken是企业号的全局唯一票据,调用接口时需携带AccessToken。

AccessToken需要用CorpID和Secret来换取,正常情况下AccessToken有效期为7200秒,有效期内重复获取返回相同结果,并自动续期。

由于获取access_token的api调用次数非常有限,建议应用存储与更新access_token,频繁刷新access_token会导致api调用受限,影响自身业务。

---------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------

所以AccessToken是主动调用模式中必须要申请的,也应该是首要要做的事。

 后台访问连接采用的是apache提供的httpcomponents-client-4.4.1包,代码如下:

//获取微信tokenpublic static String getToken(String corpid,String corpsecret){CloseableHttpClient httpclient = HttpClients.createDefault();        try {        //利用get形式获得token            HttpGet httpget = new HttpGet("https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid="+corpid+"&corpsecret="+corpsecret);            // Create a custom response handler            ResponseHandler<JSONObject> responseHandler = new ResponseHandler<JSONObject>() {                public JSONObject handleResponse(                        final HttpResponse response) throws ClientProtocolException, IOException {                    int status = response.getStatusLine().getStatusCode();                    if (status >= 200 && status < 300) {                        HttpEntity entity = response.getEntity();                        if(null!=entity){                        String result= EntityUtils.toString(entity);                            //根据字符串生成JSON对象                    JSONObject resultObj = JSONObject.fromObject(result);                    return resultObj;                        }else{                        return null;                        }                    } else {                        throw new ClientProtocolException("Unexpected response status: " + status);                    }                }            };            //返回的json对象            JSONObject responseBody = httpclient.execute(httpget, responseHandler);            String token="";            if(null!=responseBody){            token= (String) responseBody.get("access_token");//返回token            }            //System.out.println("----------------------------------------");            //System.out.println("access_token:"+responseBody.get("access_token"));            //System.out.println("expires_in:"+responseBody.get("expires_in"));            httpclient.close();            return token;        }catch (Exception e) {e.printStackTrace();        return "";} }

使用的代码包下载地址(不含JCE包):http://download.csdn.net/detail/myfmyfmyfmyf/8624491 ,下载的lib包不含JCE的包,JCE包是在回调模式中需要的,需要根据本机的jdk版本做相应的下载

 

2 0