예제 #1
0
        private void GetOpenId(ref int comid)
        {
            //完整url、域名、参数
            string urlstr   = Request.Url.ToString();
            string hoststr  = HttpContext.Current.Request.Url.Host;
            string paramstr = HttpContext.Current.Request.Url.Query;

            //TxtHelper.WriteFile("D:\\site\\b2betown\\ETS2.WebApp\\Log.txt", "urlstr:" + urlstr + "\r\n----------------------------------------\r\n" + "hoststr:" + hoststr + "\r\n----------------------------------------\r\n" + "paramstr:" + paramstr);

            //根据域名获取comid
            comid = int.Parse(Regex.Match(hoststr, "\\d{1,}").ToString());
            if (comid == 0)
            {
                return;
            }



            //TxtHelper.WriteFile("D:\\site\\b2betown\\ETS2.WebApp\\Log.txt", "Cookiehelp.GetCookie(openid):" + Cookiehelp.GetCookie("openid"));

            //判断openid是否存在于cookie中
            if (Cookiehelp.GetCookie("openid") != "")
            {
                Openid = Cookiehelp.GetCookie("openid");
                //TxtHelper.WriteFile("D:\\site\\b2betown\\ETS2.WebApp\\Log.txt", "openid:" + Openid);
            }
            else
            {
                //判断code值是否存在,存在获取openid,并且保存到cookie中;
                if (Request["code"].ConvertTo <string>("") != "")
                {
                    string code = Request["code"];
                    //TxtHelper.WriteFile("D:\\site\\b2betown\\ETS2.WebApp\\Log.txt", "code:" + code);

                    WeiXinBasic basic = new WeiXinBasicData().GetWxBasicByComId(comid);
                    if (basic == null)
                    {
                        return;
                    }

                    //必须为认证服务号才含有网页授权获取用户openid的权限
                    if (basic.Weixintype == 4)
                    {
                        string requrl =
                            string.Format(
                                "https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code",
                                basic.AppId, basic.AppSecret, code);
                        string returnStr = HttpUtil.Send("", requrl);
                        //TxtHelper.WriteFile("D:\\site\\b2betown\\ETS2.WebApp\\Log.txt", "returnStr:" + returnStr);

                        var obj = JsonConvert.DeserializeObject <ModelOpenID>(returnStr);
                        Openid = obj.openid;

                        //TxtHelper.WriteFile("D:\\site\\b2betown\\ETS2.WebApp\\Log.txt", "获取的openid:" + Openid);

                        //向cookie添加值
                        Cookiehelp.WriteCookie("openid", Openid, DateTime.Now.AddDays(30));
                    }
                }
                else //code值不存在,把域名、完整网址、参数部分 保存到数据库 请求网址记录表ReqUrl_Log,返回标识列值Mid;
                {
                    ReqUrl_Log requrllog = new ReqUrl_Log
                    {
                        mid      = 0,
                        urlstr   = urlstr,
                        hoststr  = hoststr,
                        paramstr = paramstr,
                        subtime  = DateTime.Now
                    };

                    int mid = new ReqUrl_LogHelper().InsReqUrlLog(requrllog);

                    WeiXinBasic basic = new WeiXinBasicData().GetWxBasicByComId(comid);
                    if (basic == null)
                    {
                        return;
                    }

                    //必须为认证服务号才含有网页授权获取用户openid的权限
                    if (basic.Weixintype == 4)
                    {
                        string redirect_url = urlstr.Replace(".aspx" + paramstr, "_wx_" + mid + ".aspx");
                        //TxtHelper.WriteFile("D:\\site\\b2betown\\ETS2.WebApp\\Log.txt", "redirect_url:" + redirect_url);

                        scopeurl = WeiXinJsonData.GetFollowOpenLinkUrl(comid, redirect_url);
                        //TxtHelper.WriteFile("D:\\site\\b2betown\\ETS2.WebApp\\Log.txt", "scopeurl:" + scopeurl);
                    }
                }
            }
        }
예제 #2
0
 protected void Button1_Click(object sender, EventArgs e)
 {
     //测试阶段清除cookie,测试完成后删除
     Cookiehelp.DeleteCookie("openid");
 }