/// <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); }
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); }
/// <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); }
/// <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); }
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失败"); } } } }
/// <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); }
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); }
public Jsapi_Ticket(WxAccessToken accessToken) { _accessToken = accessToken; }
public WxaCode(WxAccessToken accessToken) { _accessToken = accessToken; }