/// <summary>
        /// 注册应用凭证信息,此操作只是注册,不会马上获取Token,并将清空之前的Token
        /// </summary>
        /// <param name="appId">微信公众号后台的【开发】>【基本配置】中的“AppID(应用ID)”</param>
        /// <param name="appSecret">微信公众号后台的【开发】>【基本配置】中的“AppSecret(应用密钥)”</param>
        /// <param name="name">标记AccessToken名称(如微信公众号名称),帮助管理员识别。当 name 不为 null 和 空值时,本次注册内容将会被记录到 Senparc.Weixin.Config.SenparcWeixinSetting.Items[name] 中,方便取用。</param>
        public static void Register(string appId, string appSecret, string name = null)
        {
            //记录注册信息,RegisterFunc委托内的过程会在缓存丢失之后自动重试
            RegisterFunc = () =>
            {
                //using (FlushCache.CreateInstance())
                //{
                var bag = new AccessTokenBag()
                {
                    //Key = appId,
                    Name                  = name,
                    AppId                 = appId,
                    AppSecret             = appSecret,
                    AccessTokenExpireTime = DateTime.MinValue,
                    AccessTokenResult     = new AccessTokenResult()
                };
                Update(appId, bag, null);//第一次添加,此处已经立即更新
                return(bag);
                //}
            };
            RegisterFunc();

            if (!name.IsNullOrEmpty())
            {
                Senparc.Weixin.WxConfig.SenparcWeixinSetting.Items[name].WeixinAppId     = appId;
                Senparc.Weixin.WxConfig.SenparcWeixinSetting.Items[name].WeixinAppSecret = appSecret;
            }

            //为JsApiTicketContainer进行自动注册
            JsApiTicketContainer.Register(appId, appSecret, name);

            //OAuthAccessTokenContainer进行自动注册
            OAuthAccessTokenContainer.Register(appId, appSecret, name);
        }
Exemple #2
0
        /// <summary>
        /// 注册应用凭证信息,此操作只是注册,不会马上获取Token,并将清空之前的Token
        /// </summary>
        /// <param name="appId">微信公众号后台的【开发】>【基本配置】中的“AppID(应用ID)”</param>
        /// <param name="appSecret">微信公众号后台的【开发】>【基本配置】中的“AppSecret(应用密钥)”</param>
        /// <param name="name">标记AccessToken名称(如微信公众号名称),帮助管理员识别</param>
        public static void Register(string appId, string appSecret, string name = null)
        {
            //记录注册信息,RegisterFunc委托内的过程会在缓存丢失之后自动重试
            RegisterFunc = () =>
            {
                //using (FlushCache.CreateInstance())
                //{
                var bag = new AccessTokenBag()
                {
                    //Key = appId,
                    Name                  = name,
                    AppId                 = appId,
                    AppSecret             = appSecret,
                    AccessTokenExpireTime = DateTime.MinValue,
                    AccessTokenResult     = new AccessTokenResult()
                };
                Update(appId, bag);//第一次添加,此处已经立即更新
                return(bag);
                //}
            };
            RegisterFunc();

            //为JsApiTicketContainer进行自动注册
            JsApiTicketContainer.Register(appId, appSecret, name);

            //OAuthAccessTokenContainer进行自动注册
            OAuthAccessTokenContainer.Register(appId, appSecret, name);
        }
Exemple #3
0
        /// <summary>
        /// 注册应用凭证信息,此操作只是注册,不会马上获取Token,并将清空之前的Token
        /// </summary>
        /// <param name="appId">微信公众号后台的【开发】>【基本配置】中的“AppID(应用ID)”</param>
        /// <param name="appSecret">微信公众号后台的【开发】>【基本配置】中的“AppSecret(应用密钥)”</param>
        /// <param name="name">标记AccessToken名称(如微信公众号名称),帮助管理员识别</param>
        public static void Register(string appId, string appSecret, string name = null)
        {
            using (FlushCache.CreateInstance())
            {
                Update(appId, new AccessTokenBag()
                {
                    Name                  = name,
                    AppId                 = appId,
                    AppSecret             = appSecret,
                    AccessTokenExpireTime = DateTime.MinValue,
                    AccessTokenResult     = new AccessTokenResult()
                });
            }

            //为JsApiTicketContainer进行自动注册
            JsApiTicketContainer.Register(appId, appSecret, name);

            //OAuthAccessTokenContainer进行自动注册
            OAuthAccessTokenContainer.Register(appId, appSecret, name);
        }
Exemple #4
0
        /// <summary>
        /// 【异步方法】注册应用凭证信息,此操作只是注册,不会马上获取Token,并将清空之前的Token
        /// </summary>
        /// <param name="appId">微信公众号后台的【开发】>【基本配置】中的N“AppID(应用ID)”</param>
        /// <param name="appSecret">微信公众号后台的【开发】>【基本配置】中的“AppSecret(应用密钥)”</param>
        /// <param name="name">标记AccessToken名称(如微信公众号名称),帮助管理员识别。当 name 不为 null 和 空值时,本次注册内容将会被记录到 Senparc.Weixin.Config.SenparcWeixinSetting.Items[name] 中,方便取用。</param>
        public static async Task RegisterAsync(string appId, string appSecret, string name = null)
        {
            //记录注册信息,RegisterFunc委托内的过程会在缓存丢失之后自动重试
            RegisterFuncCollection[appId] = async() =>
            {
                //using (FlushCache.CreateInstance())
                //{
                var bag = new AccessTokenBag()
                {
                    //Key = appId,
                    Name                  = name,
                    AppId                 = appId,
                    AppSecret             = appSecret,
                    AccessTokenExpireTime = DateTimeOffset.MinValue,
                    AccessTokenResult     = new AccessTokenResult()
                };
                await UpdateAsync(appId, bag, null);//第一次添加,此处已经立即更新

                return(bag);
                //}
            };

            var registerTask = RegisterFuncCollection[appId]();

            if (!name.IsNullOrEmpty())
            {
                Senparc.Weixin.Config.SenparcWeixinSetting.Items[name].WeixinAppId     = appId;
                Senparc.Weixin.Config.SenparcWeixinSetting.Items[name].WeixinAppSecret = appSecret;
            }

            //为JsApiTicketContainer进行自动注册
            var registerJsApiTask = JsApiTicketContainer.RegisterAsync(appId, appSecret, name);

            //OAuthAccessTokenContainer进行自动注册
            var registerOAuthTask = OAuthAccessTokenContainer.RegisterAsync(appId, appSecret, name);

            Task.WaitAll(new[] { registerTask, registerJsApiTask, registerOAuthTask });//等待所有任务完成
        }