天天看点

企业微信应用开发(API信息获取---access_token获取)

 一:开发前提

进行企业微信的开发,首先需要是管理员身份,方便所需ID的获取

进入企业微信后台的方式有两种,

第一种:登录电脑版本的企业微信,如果是管理员身份,点击下图中图标,可以直接进入企业微信后台,并且已登录。

企业微信应用开发(API信息获取---access_token获取)

 第二种:

官网地址:https://work.weixin.qq.com/

登录地址:https://work.weixin.qq.com/wework_admin/loginpage_wx?from=myhome

企业微信应用开发(API信息获取---access_token获取)
企业微信应用开发(API信息获取---access_token获取)

二:企业微信后台

企业微信应用开发(API信息获取---access_token获取)

本篇文章以为自建应用为例(自建应用会了,自带应用通过API也能看懂会用)

首先创建一个应用

企业微信应用开发(API信息获取---access_token获取)
企业微信应用开发(API信息获取---access_token获取)

三:通过API获取access_token

access_token是企业后台去企业微信的后台获取信息时的重要票据,由corpid和secret产生。所有接口在通信时都需要携带此信息用于验证接口的访问权限

请求方式:GET(HTTPS)

请求URL:https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ID&corpsecret=SECRECT

corpid的位置在:下图中的企业ID

企业微信应用开发(API信息获取---access_token获取)

corpsecred的位置在应用管理中:如下图

企业微信应用开发(API信息获取---access_token获取)

把组好的链接放在浏览器中访问,如果返回的结果如下图,就说明拼接正确

企业微信应用开发(API信息获取---access_token获取)

 接下来的工作就是把Access_token提取出来

 HttpRequestUtil类---获取json

import javax.net.ssl.HttpsURLConnection;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ConnectException;
import java.net.URL;

/**
 * Company:xhb
 * Author:xhb
 * Date: 2018/9/6
 * Description:网络请求工具类
 */
public class HttpRequestUtil {

    /**
     * 若不需要传参,调用改方法请求
     *
     * @param requestUrl
     * @param requestMethod
     * @return
     */
/*    public static String httpRequest(String requestUrl, String requestMethod) {
        return httpRequest(requestUrl, requestMethod, null);
    }*/

    /**
     * 调用url,返回数据
     *
     * @param requestUrl
     * @param requestMethod
     * @param outputStr
     * @return
     */
    public static String httpRequest(String requestUrl/*, String requestMethod, String outputStr*/) {
    	try {
            URL url = new URL(requestUrl);
            HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
            conn.setDoOutput(true);
            conn.setDoInput(true);
            conn.setUseCaches(false);
            // 设置请求方式(GET/POST)
            /*conn.setRequestMethod(requestMethod);*/
            conn.setRequestProperty("content-type", "application/x-www-form-urlencoded");
            // 当outputStr不为null时向输出流写数据
            /*if (null != outputStr) {
                OutputStream outputStream = conn.getOutputStream();
                // 注意编码格式
                outputStream.write(outputStr.getBytes("UTF-8"));
                outputStream.close();
            }*/
            // 从输入流读取返回内容
            InputStream inputStream = conn.getInputStream();
            InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");
            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
            String str = null;
            StringBuffer buffer = new StringBuffer();
            while ((str = bufferedReader.readLine()) != null) {
                buffer.append(str);
            }
            // 释放资源
            bufferedReader.close();
            inputStreamReader.close();
            inputStream.close();
            inputStream = null;
            conn.disconnect();
            return buffer.toString();
        } catch (ConnectException ce) {
            System.out.println("连接超时:{}");
        } catch (Exception e) {
//            System.out.println("https请求异常:{}");
        }
        return null;
    }
}
           

Access_token类---实体

/**
 * access_token实体
 * @author xhb
 * @date
 */
public class Access_token {
	private String errcode;
	private String errmsg;
	private String access_token;  //access_token
	private String expires_in;
	public String getErrcode() {
		return errcode;
	}
	public void setErrcode(String errcode) {
		this.errcode = errcode;
	}
	public String getErrmsg() {
		return errmsg;
	}
	public void setErrmsg(String errmsg) {
		this.errmsg = errmsg;
	}
	public String getAccess_token() {
		return access_token;
	}
	public void setAccess_token(String access_token) {
		this.access_token = access_token;
	}
	public String getExpires_in() {
		return expires_in;
	}
	public void setExpires_in(String expires_in) {
		this.expires_in = expires_in;
	}
	
}
           

GetAccess_token类---封装获取Access_token

import java.util.ArrayList;
import java.util.List;

import com.alibaba.fastjson.JSONObject;
import com.ssm.mll.entity.Access_token;

/**
 * 获取access_token
 * @author xhb
 * @date  2018年10月15日17:24:41
 */
public class GetAccess_token {
	//access_token
	public static String getAccess_token(){
		String rat = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ID&corpsecret=SECRECT";
		String s = HttpRequestUtil.httpRequest(rat);
		s = "["+s+"]";
		//把读出来的json文件换换为实体
		List<Access_token> at = new ArrayList<Access_token>();
		at = JSONObject.parseArray(s, Access_token.class);
		return at.get(0).getAccess_token();
	}
	
}
           

使用方式:

//获取access_token
String access_token = GetAccess_token.getAccess_token();
           

通过此方法即可获取到access_token,获取到access_token就是完成了第一步,这是后续接口调用的凭证。