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