/// <summary>
        /// 获取访问令牌【通过更新令牌】
        /// </summary>
        /// <param name="refreshToken">更新令牌</param>
        /// <returns>访问令牌信息</returns>
        public ElemeRetTokenModel GetAccessTokenByRefreshToken(string refreshToken)
        {
            //构建请求参数
            ElemeRetTokenModel token = null;
            var parms = new StringBuilder();

            parms.AppendFormat("grant_type={0}&", "refresh_token");
            parms.AppendFormat("refresh_token={0}", refreshToken);

            int tryNum = 1;

            try
            {
                token = GetTokenByRefreshToken(parms, tryNum);
            }
            catch (Exception ex)
            {
                System.Threading.Thread.Sleep(100);
                if (tryNum <= 3)
                {
                    token = GetTokenByRefreshToken(parms, tryNum++);
                }
                else
                {
                    LogUtil.Error(string.Format("通过RefreshToken获取AccessToken失败,参考信息:{0}", ex.Message));
                }
            }

            return(token);
        }
        private ElemeRetTokenModel GetTokenByRefreshToken(StringBuilder parms, int tryNum)
        {
            //请求接口地址
            ElemeRetTokenModel token = null;
            var header       = Base64Util.Base64Encode(string.Format("{0}:{1}", ConfigUtil.EleAppKey, ConfigUtil.EleAppSecret), Encoding.UTF8);
            var responseText = HttpRequestUtil.HttpPost(ElemeConsts.GET_ACCESS_TOKEN_API, parms.ToString(), false, header);

            if (!string.IsNullOrWhiteSpace(responseText))
            {
                token = JsonUtil.ToObject <ElemeRetTokenModel>(responseText);
                if (token == null)
                {
                    LogUtil.Error(string.Format("通过RefreshToken获取AccessToken返回错误信息:{0},请求参数:{1}", responseText, parms.ToJson()));
                }
                else
                {
                    //令牌提前半天过期(12h)
                    token.expires_in = token.expires_in - (12 * 60 * 60);
                    LogUtil.Info(string.Format("尝试通过RefreshToken:{0}获取AccessToken:{1}", parms.ToString(), token.ToJson()));
                }
            }
            else
            {
                LogUtil.Error(string.Format("通过RefreshToken获取AccessToken失败,返回信息为空,请求参数:{0}", parms.ToJson()));
            }
            return(token);
        }
        /// <summary>
        /// 获取访问令牌【通过授权码】
        /// </summary>
        /// <param name="code">授权码</param>
        /// <returns>访问令牌信息</returns>
        public ElemeRetTokenModel GetAccessTokenByCode(string code)
        {
            //构建请求参数
            ElemeRetTokenModel token = null;
            var parms = new StringBuilder();

            parms.AppendFormat("grant_type={0}&", "authorization_code");
            parms.AppendFormat("code={0}&", code);
            parms.AppendFormat("redirect_uri={0}&", WebUtil.UrlEncode(ConfigUtil.EleAuthCallBack));
            parms.AppendFormat("client_id={0}", ConfigUtil.EleAppKey);

            try
            {
                //请求接口地址
                var header       = Base64Util.Base64Encode(string.Format("{0}:{1}", ConfigUtil.EleAppKey, ConfigUtil.EleAppSecret), Encoding.UTF8);
                var responseText = HttpRequestUtil.HttpPost(ElemeConsts.GET_ACCESS_TOKEN_API, parms.ToString(), false, header);
                if (!string.IsNullOrWhiteSpace(responseText))
                {
                    token = JsonUtil.ToObject <ElemeRetTokenModel>(responseText);
                    if (token == null)
                    {
                        LogUtil.Error(string.Format("通过Code获取AccessToken返回错误信息:{0},请求参数:{1}", responseText, parms.ToJson()));
                    }
                    else
                    {
                        //令牌提前半天过期(12h)
                        token.expires_in = token.expires_in - (12 * 60 * 60);
                    }
                }
                else
                {
                    LogUtil.Error(string.Format("通过Code获取AccessToken失败,返回信息为空,请求参数:{0}", parms.ToJson()));
                }
            }
            catch (Exception ex)
            {
                LogUtil.Error(string.Format("通过Code获取AccessToken失败,参考信息:{0}", ex.Message));
            }
            return(token);
        }