/**
   * 得到服务器返回的包含access token等的回应包后,解析存储到OAuth类中
   *
   * @param responseData 格式:access_token=ACCESS_TOKEN&expires_in=60&name=NAME
   * @param oAuth
   * @return
   */
  public static boolean parseAccessToken(String responseData, OAuthV2 oAuth) {

    if (!QStrOperate.hasValue(responseData)) {
      return false;
    }

    oAuth.setMsg(responseData);
    String[] tokenArray = responseData.split("&");

    log.info("parseToken response=>> tokenArray.length = " + tokenArray.length);

    if (tokenArray.length < 2) {
      return false;
    }

    String tmpStr;
    for (int i = 0; i < tokenArray.length; i++) {
      if (tokenArray[i].startsWith("access_token=")) {
        tmpStr = tokenArray[i].substring(tokenArray[i].indexOf('=') + 1, tokenArray[i].length());
        if (!QStrOperate.hasValue(tmpStr)) {
          return false;
        }
        oAuth.setAccessToken(tmpStr);
      }
      if (tokenArray[i].startsWith("expires_in=")) {
        tmpStr = tokenArray[i].substring(tokenArray[i].indexOf('=') + 1, tokenArray[i].length());
        if (!QStrOperate.hasValue(tmpStr)) {
          return false;
        }
        oAuth.setExpiresIn(tmpStr);
      }
    }

    return true;
  }
  /**
   * 使用Authorization code方式鉴权时,直接将授权码的参数记录到OAuth类中
   *
   * @param authorizeCode
   * @param openid
   * @param openkey
   * @param oAuth
   * @return
   */
  public static boolean setAuthorization(
      String authorizeCode, String openid, String openkey, OAuthV2 oAuth) {

    if ((!QStrOperate.hasValue(authorizeCode))
        || (!QStrOperate.hasValue(openid))
        || (!QStrOperate.hasValue(openkey))) {
      return false;
    }
    oAuth.setAuthorizeCode(authorizeCode);
    oAuth.setOpenid(openid);
    oAuth.setOpenkey(openkey);
    return true;
  }
  /**
   * 使用Authorization code方式鉴权时,请求用户授权后,解析开放平台返回的参数是否包含授权码等信息
   *
   * @param responseData 格式:code=CODE&openid=OPENID&openkey=OPENKEY
   * @param oAuth
   * @return
   */
  public static boolean parseAuthorization(String responseData, OAuthV2 oAuth) {

    oAuth.setStatus(2); // 假设出错
    if (!QStrOperate.hasValue(responseData)) {
      return false;
    }

    oAuth.setMsg(responseData);
    String[] tokenArray = responseData.split("&");

    log.info("parseToken response=>> tokenArray.length = " + tokenArray.length);

    if (tokenArray.length < 3) {
      return false;
    }

    for (int i = 0; i < tokenArray.length; i++) {
      if (tokenArray[i].startsWith("code=")) {
        oAuth.setAuthorizeCode(
            tokenArray[i].substring(tokenArray[i].indexOf('=') + 1, tokenArray[i].length()));
      }
      if (tokenArray[i].startsWith("openid=")) {
        oAuth.setOpenid(
            tokenArray[i].substring(tokenArray[i].indexOf('=') + 1, tokenArray[i].length()));
      }
      if (tokenArray[i].startsWith("openkey=")) {
        oAuth.setOpenkey(
            tokenArray[i].substring(tokenArray[i].indexOf('=') + 1, tokenArray[i].length()));
      }
    }

    // 检查是否取得code
    if (!QStrOperate.hasValue(oAuth.getAuthorizeCode())) {
      return false;
    }

    oAuth.setStatus(0); // 没有出错
    return true;
  }