/// <summary> /// 微信认证 /// https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx24e47efa56c2e554&redirect_uri=http%3a%2f%2fmap.lywenkai.cn%2fWeChatManage%2fWeiXinHome%2fRedirect&response_type=code&scope=snsapi_userinfo&state=http%3a%2f%2fmap.lywenkai.cn%2fWeChatManage%2fLogin%2fIndex#wechat_redirect /// </summary> /// <param name="code">snsapi_userinfo</param> /// <param name="state">回调url</param> /// <returns></returns> public ActionResult Redirect(string code, string state) { //若用户禁止授权,则重定向后不会带上code参数 if (string.IsNullOrEmpty(code)) { return(Redirect(state)); } else { WeixinToken token = new WeixinToken(); WeixinTokenBase tokenBase = new WeixinTokenBase(); //判断是否保存微信token if (Session[WebSiteConfig.WXTOKEN_SESSION_NAME] != null) { token = Session[WebSiteConfig.WXTOKEN_SESSION_NAME] as WeixinToken; } else { string tokenUrl = string.Format(WeixinConfig.GetTokenUrl, code); token = AnalyzeHelper.Get <WeixinToken>(tokenUrl); if (token.errcode != null) { return(Content(token.errcode + ":" + token.errmsg)); } Session[WebSiteConfig.WXTOKEN_SESSION_NAME] = token; } //判断是否保存微信token基础 if (Session[WebSiteConfig.WXTOKEN_SESSION_NAME_BASE] != null) { tokenBase = Session[WebSiteConfig.WXTOKEN_SESSION_NAME_BASE] as WeixinTokenBase; } else { string tokenBaseUrl = string.Format(WeixinConfig.GetTokenBaseUrl, code); tokenBase = AnalyzeHelper.Get <WeixinTokenBase>(tokenBaseUrl); if (tokenBase.errcode != null) { return(Content(tokenBase.errcode + ":" + tokenBase.errmsg)); } Session[WebSiteConfig.WXTOKEN_SESSION_NAME_BASE] = tokenBase; } //查询用户是否存在 var userEntity = wechatUserBll.GetEntity(token.openid); if (userEntity == null) { string userInfoUrl = string.Format(WeixinConfig.GetUserInfoUrl, token.access_token, token.openid); var userInfo = AnalyzeHelper.Get <WeixinUserInfo>(userInfoUrl); if (userInfo.errcode != null) { Response.Write(userInfo.errcode + ":" + userInfo.errmsg); Response.End(); } else { userEntity = new WeChat_UsersEntity() { City = userInfo.city, Country = userInfo.country, HeadimgUrl = userInfo.headimgurl, NickName = userInfo.nickname, OpenId = userInfo.openid, Province = userInfo.province, Sex = userInfo.sex }; wechatUserBll.SaveForm("", userEntity); } } Session[WebSiteConfig.WXUSER_SESSION_NAME] = userEntity; return(Redirect(state)); } }
public ActionResult GetWxPic(string media_id, string callback, string folder) { WeixinTokenBase tokenBase = new WeixinTokenBase(); //判断是否保存微信token if (Session[WebSiteConfig.WXTOKEN_SESSION_NAME_BASE] != null) { tokenBase = Session[WebSiteConfig.WXTOKEN_SESSION_NAME_BASE] as WeixinTokenBase; } else { string returnUrl = Url.Action(callback); return(RedirectToAction("Index", "WeiXinHome", new { urlstr = returnUrl })); } string fileGuid = Guid.NewGuid().ToString(); string uploadDate = DateTime.Now.ToString("yyyyMMdd"); string dir = String.Format("/Resource/Pet/{0}/{1}/", folder, uploadDate); if (Directory.Exists(Server.MapPath(dir)) == false)//如果不存在就创建file文件夹 { Directory.CreateDirectory(Server.MapPath(dir)); } string newfileName = Guid.NewGuid().ToString(); //原图 string fullDir1 = dir + newfileName + ".jpg"; string imgFilePath = Request.MapPath(fullDir1); HttpWebResponse myResponse = null; try { //token.access_token = "5_MZsxQs1ztodyRCDw0wvDQddW9OpzYxLZyNpzloD-jsUFRN3MDhXWzcOEjdq5jk1L5_z1IoCKbti_j5AMuNtRo78eML4l3CKJS7JyC0A5BXJ5a9qEZr7Rt1xxhFkdGGbEXiCTDMv-J2jfSTgIYZZcAEAPQQ"; var url = string.Format("https://api.weixin.qq.com/cgi-bin/media/get?access_token={0}&media_id={1}", tokenBase.access_token, media_id); HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); req.Method = "GET"; myResponse = (HttpWebResponse)req.GetResponse(); StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8); Stream stream = myResponse.GetResponseStream(); #region 保存下载图片 FileStream fileStream = new FileStream(imgFilePath, FileMode.Create, FileAccess.Write); byte[] bytes = new byte[4096]; int readSize = 0; while ((readSize = stream.Read(bytes, 0, 4096)) > 0) { fileStream.Write(bytes, 0, readSize); fileStream.Flush(); } #endregion myResponse.Close(); stream.Close(); fileStream.Close(); } //异常请求 catch (WebException ex) { fullDir1 = ""; } finally { } return(Content(fullDir1)); }
public ActionResult GetWxPic(string media_id, string callback, string folder) { WeixinTokenBase tokenBase = new WeixinTokenBase(); //判断是否保存微信token if (Session[WebSiteConfig.WXTOKEN_SESSION_NAME_BASE] != null) { tokenBase = Session[WebSiteConfig.WXTOKEN_SESSION_NAME_BASE] as WeixinTokenBase; } else { string returnUrl = Url.Action(callback); return(RedirectToAction("Index", "Agent", new { urlstr = returnUrl })); } string dir = "/Resource/DocumentFile/Agent/"; if (Directory.Exists(Server.MapPath(dir)) == false)//如果不存在就创建file文件夹 { Directory.CreateDirectory(Server.MapPath(dir)); } string newfileName = Guid.NewGuid().ToString(); //原图 string fullDir1 = dir + newfileName + ".jpg"; string imgFilePath = Request.MapPath(fullDir1); HttpWebResponse myResponse = null; try { var url = string.Format("https://api.weixin.qq.com/cgi-bin/media/get?access_token={0}&media_id={1}", tokenBase.access_token, media_id); HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); req.Method = "GET"; myResponse = (HttpWebResponse)req.GetResponse(); StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8); Stream stream = myResponse.GetResponseStream(); #region 保存下载图片 FileStream fileStream = new FileStream(imgFilePath, FileMode.Create, FileAccess.Write); byte[] bytes = new byte[4096]; int readSize = 0; while ((readSize = stream.Read(bytes, 0, 4096)) > 0) { fileStream.Write(bytes, 0, readSize); fileStream.Flush(); } #endregion myResponse.Close(); stream.Close(); fileStream.Close(); } //异常请求 catch (WebException ex) { fullDir1 = ""; } finally { } return(Content(fullDir1)); }