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