多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
##接口访问凭证 ###简介 平台为开发者提供的一系列接口,在调用时都需要传入接口访问凭证access_token。 ###获取接口凭证 自定义菜单的创建、查询、删除都需要调用公众平台开放的自定义菜单接口,而调用接口需要先获取 access_token(接口访问凭证)。获取凭证接口的请求地址如下 ~~~ https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET ~~~ 通过发起HTTP GET请求调用该接口,调用接口时需传入参数grant_type、appid和sercet。其中grant_type是授权类型,这里只需要传入固定值 client_credential即可,appid和secret可以再公众号开发者中心找到。如果接口调用成功,会返回如下json结果 ~~~ {"access_token":"ACCESS_TOKEN","expires_in":7200} ~~~ 其中 access_token 就是我们需要的接口访问凭证,它是一个长度上百位的加密字符串;而expires_in 是凭证的有效期,单位是秒 * * * * * ######**提示**:access_token的有效期是7200秒,也就是2个小时。这就意味着,并不是每次访问通用接口都需要重新获取access_token,可以将获取到的access_token存储到缓存或数据库中,只要access_token没有过期,就能取出来继续使用 * * * * * ###获取访问凭证的方式 获取凭证的方式可以分为两种: 手动获取和程序获取。手动获取就是讲请求地址放到浏览器地址栏进行访问,而程序获取是指通过编程调用获取凭证接口。两种获取方式本质都是向微信服务器发送HTTPS GET请求。 ####1.手动获取 手动获取比较简单,直接将替换好参数的url放到浏览器上进行访问,正常情况下就会返回所需要的凭证信息 ####2.程序获取 在Java中,访问HTTPS链接需要用到HttpsURLConnection类。代码示例如下 ps: 代码中需要用到 “自定义信任管理器”请点击链接 : [自定义信任管理器](http://www.kancloud.cn/yongxin/wxapi/196780) ~~~ /* * 测试获取凭证(HTTPS GET请求) */ public class TokenTest{ public static void man(String[] args) throws Exception{ //获取凭证接口地址 String tokneUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET"; //建立连接 URL url = new URL(tokenUrl); HttpsURLConnection coon = (HTTPSURLConnection) url.openConnection(); //使用自定义的信任管理器 TrusManager[] tm = {new MyX509TrustManager()}; SSLContext sslContext = SSLContext.getInstance("SSL","SunJSSE"); sslContext.init(null,tm,new java.security.SecureRandom()); SSLSocketFactory ssf = sslContext.getSocketFactory(); conn.setSSLSocketFactory(ssf); conn.setDoInput(true); //设置请求方式 conn.setRequestMethod("GET"); //取得输入流 InputStream inputStream = conn.getInputStream(); InputStreamReader inputStreamReader = new InputStreamReader(inputStream,"utf-8"); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); //设置相应内容 StringBuffer buffer = new StringBuffer(); String str = null; while((str = bufferedReader.readLine()) != null){ buffer.append(str); } //关闭、释放资源 bufferedReader.close(); inputStreamReader.close(); inputStream.close(); conn.disconnect(); //输出返回结果 System.out.println(buffer); } } ~~~ 以上代码先通过URL对象的 openConnection()方法与微信的凭证处理服务建立连接,并将HTTPS请求方式设置为GET。再使用HttpsURLConnection类的getInputStream()方法得到输入流,读取输入流中的内容(正常情况下得到的就是凭证信息)。接下来从Json字符串中解析出access_token 和 expires_in 就可以了