Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        /// <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);
        }