/// <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); }