示例#1
0
        /// <summary>
        /// 用户自定义获取AccessToken
        /// </summary>
        /// <returns></returns>
        public static AccessTokenCacheModel GetAccessToken()
        {
            AccessToken.GetAccessTokenFromStorage get = delegate(DateTime Now, string AppId)
            {
                //根据AppId从自定义存储库(接入者的DB、Cache、仓储源)获取AccessToken

                /*
                 * return GetAccessTokenByCache(AppId);
                 * return GetAccessTokenByRedis(AppId);
                 * return GetAccessTokenByMemcache(AppId);
                 * return GetAccessTokenByMongodb(AppId);
                 * return GetAccessTokenByDB(AppId);
                 * ……
                 */

                return(null);
            };
            AccessToken.UpdateAccessTokenToStorage update = delegate(DateTime now, AccessTokenCacheModel Token)
            {
                //根据Token.appid将AccessToken插入或更新到自定义存储库(接入者的DB、Cache、仓储源)

                /*
                 * return UpdateAccessTokenToCache(Token.appid, Token);
                 * return UpdateAccessTokenToRedis(Token.appid, Token);
                 * return UpdateAccessTokenToMemcache(Token.appid, Token);
                 * return UpdateAccessTokenToMongodb(Token.appid, Token);
                 * return UpdateAccessTokenToDB(Token.appid, Token);
                 * ……
                 */

                return(true);
            };


            string appId     = ConfigurationManager.AppSettings["WeChatAppId"].ToString();     //AppId为空时默认取配置文件appSettings节点key=WeChatAppId
            string appSecret = ConfigurationManager.AppSettings["WeChatAppSecret"].ToString(); //AppSecret为空时默认取配置文件appSettings节点key=WeChatAppSecret

            var token = AccessToken.GetAccessToken(DateTime.Now, appId, appSecret, get, update);

            if (null != token)
            {
                return(token);
            }
            else
            {
                return(default(AccessTokenCacheModel));
            }
        }
示例#2
0
        /// <summary>
        /// 用户自定义获取AccessToken
        /// </summary>
        /// <returns></returns>
        public static AccessTokenCacheModel GetAccessToken()
        {
            AccessToken.GetAccessTokenFromStorage get = delegate(DateTime Now, string AppId)
            {
                /* 根据AppId从自定义存储库(接入者的DB、Cache、仓储源)获取AccessToken
                 * return GetAccessTokenByCache(AppId);
                 * return GetAccessTokenByRedis(AppId);
                 * return GetAccessTokenByMemcache(AppId);
                 * return GetAccessTokenByMongodb(AppId);
                 * return GetAccessTokenByDB(AppId);
                 * ……
                 */

                /***** 示例·开始 *****/
                AccessTokenCacheModel AccessToken = null;
                /* 先从自己系统的快速获取已存在的票据(Cache、Redis,Memcache等)*/
                object TokenFromCache = CacheHelper.GetCache("WeChatAccessToken_" + AppId);
                AccessToken = null != TokenFromCache ? (AccessTokenCacheModel)TokenFromCache : null;
                if (WeChatHelper4Net.AccessToken.CheckAccessToken(Now, AccessToken))
                {
                    return(AccessToken);
                }
                /* 如果快速数据没有,再从自己系统的稳定数据库获取已存在的票据(MySQL,SQLServer,Oracle等)*/
                //var TokenFromDB = BLLRepository.wechatManageBLL.GetTokenOrTicket(AppId, "AccessToken");
                //if(null != TokenFromDB)
                //{
                //    AccessToken = new AccessTokenCacheModel()
                //    {
                //        appid = TokenFromDB.appid,
                //        access_token = TokenFromDB.access_token,
                //        expires_in = TokenFromDB.expires_in,
                //        expires_time = TokenFromDB.expires_time,
                //        errcode = TokenFromDB.errcode,
                //        errmsg = TokenFromDB.errmsg
                //    };
                //    if(WeChatHelper4Net.AccessToken.CheckAccessToken(Now, AccessToken))
                //    {
                //        CacheHelper.SetCache("WeChatAccessToken_" + AccessToken.appid, AccessToken, AccessToken.expires_in / 60);
                //        return AccessToken;
                //    }
                //}
                /***** 示例·结束 *****/

                return(null);
            };
            AccessToken.UpdateAccessTokenToStorage update = delegate(DateTime now, AccessTokenCacheModel Token)
            {
                bool result = false;

                /* 根据Token.appid将AccessToken插入或更新到自定义存储库(接入者的DB、Cache、仓储源)
                 * result = UpdateAccessTokenToCache(Token.appid, Token);
                 * result = UpdateAccessTokenToRedis(Token.appid, Token);
                 * result = UpdateAccessTokenToMemcache(Token.appid, Token);
                 * result = UpdateAccessTokenToMongodb(Token.appid, Token);
                 * result = UpdateAccessTokenToDB(Token.appid, Token);
                 * ……
                 */

                /***** 示例·开始 *****/
                if (null != Token && !string.IsNullOrWhiteSpace(Token.appid) && Token.expires_in > 60)
                {
                    /* 先将票据存到自己系统的快速获取已存在的票据(Cache、Redis,Memcache等)*/
                    CacheHelper.SetCache("WeChatAccessToken_" + Token.appid, Token, Token.expires_in / 60);

                    //var entity = new TbWeChatTokenOrTicketModel()
                    //{
                    //    appid = Token.appid,
                    //    access_token = Token.access_token,
                    //    expires_in = Token.expires_in,
                    //    expires_time = Token.expires_time,
                    //    errcode = Token.errcode,
                    //    errmsg = Token.errmsg,
                    //    type = "AccessToken",
                    //    UpdateTime = DateTime.Now
                    //};
                    ///* 为了避免快速数据丢失,再将票据存到自己系统的稳定数据库获取已存在的票据(MySQL,SQLServer,Oracle等)*/
                    //result = BLLRepository.wechatManageBLL.UpdateTokenOrTicket(entity);
                }
                /***** 示例·结束 *****/

                return(result);
            };

            string appId     = ConfigurationManager.AppSettings["WeChatAppId"].ToString();     //AppId为空时默认取配置文件appSettings节点key=WeChatAppId
            string appSecret = ConfigurationManager.AppSettings["WeChatAppSecret"].ToString(); //AppSecret为空时默认取配置文件appSettings节点key=WeChatAppSecret

            var token = AccessToken.GetAccessToken(DateTime.Now, appId, appSecret, get, update);

            if (null != token)
            {
                return(token);
            }
            else
            {
                return(default(AccessTokenCacheModel));
            }
        }