【企业微信】企业微信二次验证

2020-05-02  本文已影响0人  7ColorLotus
 /**
     * 获取用户信息地址
     */
    private static final String GET_USER_INFO_URL = "https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=%s&code=%s";

    public static final String WECHAT_WORK_API_ERROR_CODE_STR = "errcode";
    public static final String WECHAT_WORK_API_ERROR_MSG_STR = "errmsg";
    public static final Integer WECHAT_WORK_API_ERROR_CODE_SUCCESS = 0;
    public static final String WECHAT_WORK_ACCESS_TOKEN_INVALID_ERROR_CODE = "40014";

    /**
     * 根据code获取成员信息
     * @param code
     * @param accessToken 可以是企业微信应用的accessToken,也可以是企业微信通讯录的accessToken
     * @return
     */
    public static JSONObject getUserInfo(String code, String accessToken){
        log.info("getUserInfo code : {}, accessToken : {}", code, accessToken);
        String result = HttpUtil.doGet(String.format(GET_USER_INFO_URL, accessToken, code));
        log.info("getUserInfo result: {}", result);
        JSONObject jsonResult = JSONObject.parseObject(result);
        if (WECHAT_WORK_ACCESS_TOKEN_INVALID_ERROR_CODE
                .equals(jsonResult.get(WECHAT_WORK_API_ERROR_CODE_STR))) {
            accessToken = forceGetAccessToken(); //如果accessToken过期重新获取一次
            result = HttpUtil.doGet(String.format(GET_USER_INFO_URL, accessToken, code));
            log.info("second getUserInfo result: {}", result);
            jsonResult = JSONObject.parseObject(result);
        }
        return jsonResult;
    }
  1. 获取到成员的userid后,可以再去获取成员的其他信息并处理自定义页面的一些验证数据。
  2. 自定义的验证逻辑通过后,我们就可以通过调用企业微信的二次验证接口让成员成功加入企业
  /**
     * 二次验证接口URL
     */
    private static final String  AUTH_SUCC_URL = "https://qyapi.weixin.qq.com/cgi-bin/user/authsucc?access_token=%s&userid=%s";
    
    /**
     * 企业微信二次校验接口
     * @param userId
     * @param accessToken
     * @return JSONObject
     */
    public static JSONObject authSucc(String userId, String accessToken){
        log.info("authSucc userId : {}, accessToken : {}", userId, accessToken);
        String result = HttpUtil.doGet(String.format(AUTH_SUCC_URL, accessToken, userId));
        log.info("authSucc result: {}", result);

        JSONObject jsonResult = JSONObject.parseObject(result);
        if (Constants.WECHAT_WORK_ACCESS_TOKEN_INVALID_ERROR_CODE
                .equals(jsonResult.get(Constants.WECHAT_WORK_API_ERROR_CODE_STR))) {
            accessToken = forceGetAccessToken();
            result = HttpUtil.doGet(String.format(AUTH_SUCC_URL, accessToken, userId));
            log.info("second authSucc result: {}", result);
            jsonResult = JSONObject.parseObject(result);
        }
        return jsonResult;
    }

至此,企业微信的二次验证功能就完成了!!

上一篇下一篇

猜你喜欢

热点阅读