public bool GetToken3(string appId, int authoType, ref string token) { //兼容第三方,先获取第三方token,如果获取失败,则判断是否为个人授权 //个人授权则通过小程序密钥获取token GongZhongToken gModel = GetGongZhongToken(appId); if (gModel != null && gModel.errcode == "0") { token = gModel.access_token; } else { GetAccessTokenMsg tModel = GetThirthPlatToken(appId); if (tModel != null && tModel.obj != null && tModel.isok != -1) { token = tModel.obj.access_token; } else { token = tModel?.msg; return(false); } } return(true); }
public bool GetToken(XcxAppAccountRelation xcxrelation, ref string token) { //兼容第三方,先获取第三方token,如果获取失败,则判断是否为个人授权 //个人授权则通过小程序密钥获取token switch (xcxrelation.AuthoAppType) { case 0: GongZhongToken gModel = GetGongZhongToken(xcxrelation.AppId); if (gModel != null && gModel.errcode == "0") { token = gModel.access_token; } else { token = gModel?.errmsg; return(false); } break; case 1: _openType = xcxrelation.ThirdOpenType; GetAccessTokenMsg tModel = GetThirthPlatToken(xcxrelation.AppId); if (tModel != null && tModel.obj != null && tModel.isok != -1) { token = tModel.obj.access_token; } else { token = tModel?.msg; return(false); } break; } return(true); }
/// <summary> /// 不通过第三方授权平台获取小程序token /// </summary> /// <param name="appId"></param> /// <returns></returns> public GongZhongToken GetGongZhongToken(string appId) { string key = string.Format(_redis_MiniappGongZhongToken, appId); GongZhongToken model = RedisUtil.Get <GongZhongToken>(key); if (model == null) { model = new GongZhongToken(); } if (string.IsNullOrEmpty(appId)) { model.errmsg = "公众号token:appid不能为空"; model.errcode = "-1"; return(model); } UserXcxTemplate userxcxModel = UserXcxTemplateBLL.SingleModel.GetModelByAppId(appId); if (userxcxModel == null) { model.errmsg = "公众号token:上传记录为空"; model.errcode = "-1"; return(model); } if (string.IsNullOrEmpty(userxcxModel.Appsr)) { model.errmsg = "公众号token:小程序密码为空"; model.errcode = "-1"; return(model); } //token为空或者超过100分钟,重新获取token if (string.IsNullOrEmpty(model.access_token) || model.UpdateTime < DateTime.Now.AddMinutes(100)) { lock (_lockObj) { model = RedisUtil.Get <GongZhongToken>(key); if (model == null) { model = new GongZhongToken(); } if (string.IsNullOrEmpty(model.access_token) || model.UpdateTime < DateTime.Now.AddMinutes(100)) { string url = GetGongZhonTokenUrl(userxcxModel.AppId, userxcxModel.Appsr); string resultStr = HttpHelper.GetData(url); if (string.IsNullOrEmpty(resultStr)) { model.errmsg = "公众号token:获取公众号token失败"; model.errcode = "-1"; return(model); } GongZhongToken resultData = JsonConvert.DeserializeObject <GongZhongToken>(resultStr); if (resultData == null) { model.errmsg = "公众号token:获取token为null"; model.errcode = "-1"; return(model); } if (resultData.errcode == "0") { resultData.AppId = userxcxModel.AppId; resultData.AddTime = model.AddTime; resultData.UpdateTime = DateTime.Now; RedisUtil.Set <GongZhongToken>(key, resultData); model = resultData; } else { log4net.LogHelper.WriteInfo(this.GetType(), "公众号token:" + JsonConvert.SerializeObject(resultData)); model.errmsg = "公众号token:获取token失败"; model.errcode = "-1"; return(model); } } } } return(model); }