Ejemplo n.º 1
0
        /// <summary>
        /// 获取微信用户信息
        /// </summary>
        /// <param name="token"></param>
        /// <param name="code"></param>
        /// <returns></returns>
        public static WxUserInfo GetWxUserInfo(WxAccessToken token, string code)
        {
            string     url      = "https://api.weixin.qq.com/sns/userinfo?access_token=" + token.access_token + "&openid=" + token.openid;
            WxUserInfo userInfo = JsonHelper.JsonStringToObj <WxUserInfo>(RequestHttp.HttpGet(url));

            return(userInfo);
        }
Ejemplo n.º 2
0
    public void GetUserMes(string Code)
    {
        WxAccessToken WxAc = Wx.User.GetAccessToken(Code);

        ResMes("静默授权用户信息如下:");
        ResMes("【AccessToken】:" + WxAc.access_token);
        ResMes("【expires_in】:" + WxAc.expires_in);
        ResMes("【refresh_token】:" + WxAc.refresh_token);
        ResMes("【openid】:" + WxAc.openid);
        ResMes("【scope】:" + WxAc.scope);
    }
Ejemplo n.º 3
0
        /// <summary>
        /// 更新access_token列表中的值
        /// </summary>
        /// <param name=""></param>
        private static void UpdateAccessToken(WxAccessToken accessTokenObj)
        {
            WxAccessToken tempObj = lstAccessTokenObj.Where(r => accessTokenObj.appName.Equals(r.appName)).FirstOrDefault();

            // 删除旧对象
            if (tempObj != null)
            {
                lstAccessTokenObj.Remove(tempObj);
            }
            // 追加新对象
            lstAccessTokenObj.Add(accessTokenObj);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 检查access_token是否已经过期
        /// </summary>
        /// <returns></returns>
        private static bool CheckExpireTime(WxAccessToken accessTokenObj)
        {
            // 当前时间
            DateTime nowTime = DateTime.Now;
            // 过期时间
            DateTime tempTime = accessTokenObj.updateTime.AddSeconds(int.Parse(accessTokenObj.expires_in));

            if (DateTime.Compare(nowTime, tempTime) >= 0)
            {
                return(true);
            }
            return(false);
        }
Ejemplo n.º 5
0
        protected void Page_Load(object sender, EventArgs e)
        {
            int    wxType  = CRequest.GetInt("type");
            string wxReurl = CRequest.GetString("reurl");
            string wxCode  = CRequest.GetString("code");

            if (!Page.IsPostBack)
            {
                if (wxCode != "")
                {
                    //获取全局token
                    if (!WxLoginBLL.SaveXMLByApplactionToken())
                    {
                        Log.WriterLog("获取全局token失败");
                    }
                    WxAccessToken wx = WxLoginBLL.GetToken(wxCode);
                    if (wx.openid != null)
                    {
                        WxUserInfo userInfo = WxLoginBLL.GetWxUserInfo(wx, wxCode);
                        if (userInfo.openid != null)
                        {
                            object        obj;
                            WxUserInfoBLL uill = new WxUserInfoBLL();
                            uill.CheckUserInfo(userInfo);
                            List <WxUserInfo> users = uill.QueryUserInfoByID(wx.openid);
                            if (users != null && users.Count > 0)
                            {
                                string openId = CTools.SetOpenId(users[0].openid);
                                obj = new
                                {
                                    userid = users[0].u_id,
                                    openid = openId,
                                    token  = CTools.GetMD5FromString(users[0].u_id + openId + "SSXXCJYXGS")
                                };
                                Session["UserInfo"] = users[0];
                                Cookies.SetCookie("UserInfo", JsonHelper.ObjToJsonString <object>(obj), 90);
                                Response.Redirect(WxConfig.WxHost);
                            }
                        }
                        else
                        {
                            Response.Write("获取用户信息失败");
                        }
                    }
                    else
                    {
                        Response.Write("获取用户token失败");
                    }
                }
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 通过AppId + AppSecret得到access_token(更新秒数根据获取access_token时的回传值而定)
        /// </summary>
        /// <param name="wcf"></param>
        /// <param name="isNew">判断值为"isNew"时强制更新access_token</param>
        /// <returns></returns>
        public static string GetAccessToken(WeChatConfig wcf, string isNew = "")
        {
            WxAccessToken accessTokenObj = lstAccessTokenObj.Where(r => wcf.appName.Equals(r.appName)).FirstOrDefault();

            if ("isnew".Equals(isNew.ToLower()) || accessTokenObj == null || string.IsNullOrWhiteSpace(accessTokenObj.access_token) ||
                CheckExpireTime(accessTokenObj))
            {
                /***获取新的access_token***/
                string access_token = string.Empty;
                string expires_in   = string.Empty;

                string url = "https://api.weixin.qq.com/cgi-bin/token";
                url += "?grant_type=client_credential";
                url += "&appid=" + wcf.appId;
                url += "&secret=" + wcf.appSecret;
                //Get请求
                string jsonStr = HttpService.Get(url);
                // 解析JSON字符串
                Dictionary <string, string> menu = jsonStr.JSDeserialize <Dictionary <string, string> >();

                menu.TryGetValue("access_token", out access_token);
                menu.TryGetValue("expires_in", out expires_in);

                // 考虑到获取access_token可能存在网络延迟,这里重新获取一次当前时间
                DateTime nowTime = DateTime.Now;

                WxAccessToken at = new WxAccessToken
                {
                    // AppName
                    appName = wcf.appName,
                    // access_token
                    access_token = access_token,
                    // XX秒后过期
                    expires_in = expires_in,
                    // 更新时间
                    updateTime = nowTime
                };

                accessTokenObj = at;

                // 更新access_token列表中的值
                UpdateAccessToken(at);
            }

            return(accessTokenObj.access_token);
        }
Ejemplo n.º 7
0
    public void GetUserMes(string Code)
    {
        WxAccessToken WxAc = Wx.User.GetAccessToken(Code);

        WxUser User = Wx.User.GetUserMes(WxAc.access_token.ToString(), WxAc.openid.ToString());

        ResMes("用户授权信息如下:");
        ResMes("---------【基础信息】---------");
        ResMes("【AccessToken】:" + WxAc.access_token);
        ResMes("【expires_in】:" + WxAc.expires_in);
        ResMes("【refresh_token】:" + WxAc.refresh_token);
        ResMes("【openid】:" + WxAc.openid);
        ResMes("【scope】:" + WxAc.scope);
        ResMes("---------【用户信息】---------");
        ResMes("【openid】:" + User.openid);
        ResMes("【nickname】:" + User.nickname);
        ResMes("【sex】:" + User.sex);
        ResMes("【province】:" + User.province);
        ResMes("【city】:" + User.city);
        ResMes("【country】:" + User.country);
        ResMes("【headimgurl】:" + User.headimgurl);
        ResMes("【unionid】:" + User.unionid);
    }
Ejemplo n.º 8
0
 public Jsapi_Ticket(WxAccessToken accessToken)
 {
     _accessToken = accessToken;
 }
Ejemplo n.º 9
0
 public WxaCode(WxAccessToken accessToken)
 {
     _accessToken = accessToken;
 }