public ActionResult Callback() { var code = Request.QueryString.Get("code"); if (string.IsNullOrEmpty(code))//没有code表示授权失败 { return(RedirectToAction("Failed", "OAuth")); } var state = Request.QueryString.Get("state"); var cache_status = System.Web.HttpContext.Current.Cache.Get(state); var redirect_url = cache_status == null ? "/" : cache_status.ToString();//没有获取到state,就跳转到首页 var access_token_scope = ""; double expires_in = 0; var access_token = ""; var openId = ""; var token = OAuth2API.GetAccessToken(code, WeixinConfig.AppID, WeixinConfig.AppSecret); dynamic userinfo; var refreshAccess_token = OAuth2API.RefreshAccess_token(token.refresh_token, WeixinConfig.AppID); access_token = refreshAccess_token.access_token;//通过code换取的是一个特殊的网页授权access_token,与基础支持中的access_token(该access_token用于调用其他接口)不同。 openId = refreshAccess_token.openid; access_token_scope = refreshAccess_token.scope; expires_in = refreshAccess_token.expires_in; userinfo = OAuth2API.GetUserInfo(access_token, openId);//snsapi_userinfo,可以用户在未关注公众号的情况下获取用户基本信息 //写入cookies AuthorizationManager.SetTicket(true, 1, openId, userinfo.nickname); Thread.Sleep(500);//暂停半秒钟,以等待IOS设置Cookies的延迟 LogWriter.Default.WriteInfo(string.Format("OAuth success: identity: {0} , name: {1} , redirect_rul:{2} , expires_in: {3}s ", openId, userinfo.nickname, redirect_url, expires_in)); return(new RedirectResult(redirect_url, true)); }
public ActionResult SeeMember(string code, string state) { try { if (state == "wanlixin") { var token = OAuth2API.GetAccessToken(code, WeixinConfig.AppID, WeixinConfig.AppSecret); var usermodel = WebUtils.Get2 <CustomerNewSelect>(WebConfig.ApiBaseUrl + "WlxApi/GetCustomerNewBySql", token.openid); if (!string.IsNullOrEmpty(usermodel.c_num))//c_openid已经更新过 { Customer customer = new Customer(); customer.Phone = usermodel.c_num; Session["Customer"] = customer; h_CustomerNew h_CustomerNew = new h_CustomerNew(); h_CustomerNew.c_num = usermodel.c_num; h_CustomerNew.c_Name = usermodel.c_Name; h_CustomerNew.c_Identity = usermodel.c_Identity; Session["h_CustomerNew"] = h_CustomerNew; return(RedirectToAction("Member", "Home")); } } return(Content("验证失败4")); } catch (Exception ex) { string st = string.Format("时间:{0},描述:{1}", DateTime.Now, ex.ToString()); Tools.MessBox(st, "//Log//Weixin//SeeMember"); return(Redirect("/error/index")); } }
public ActionResult Callback() { var code = Request.QueryString.Get("code"); //没有code表示授权失败 if (string.IsNullOrEmpty(code)) { return(RedirectToAction("Failed", "OAuth")); } var state = Request.QueryString.Get("state"); var cache_status = System.Web.HttpContext.Current.Cache.Get(state); //没有获取到state,就跳转到首页 var redirect_url = cache_status == null ? "/" : cache_status.ToString(); redirect_url = HttpUtility.UrlDecode(redirect_url); var scope = WeixinConfig.OauthScope; var access_token_scope = ""; double expires_in = 0; var access_token = ""; var openId = ""; var token = OAuth2API.GetAccessToken(WeixinConfig.AppID, WeixinConfig.AppSecret, code); dynamic userinfo; if (scope == "snsapi_userinfo") { //var refreshAccess_token = OAuth2API.RefreshAccess_token(token.refresh_token, WeixinConfig.AppID); ////通过code换取的是一个特殊的网页授权access_token, ////与基础支持中的access_token(该access_token用于调用其他接口)不同。 //access_token = refreshAccess_token.access_token; //openId = refreshAccess_token.openid; //access_token_scope = refreshAccess_token.scope; //expires_in = refreshAccess_token.expires_in; //snsapi_userinfo,可以用户在未关注公众号的情况下获取用户基本信息 userinfo = OAuth2API.GetUserInfo(token.access_token, token.openid); } else { //基础支持中的access_token access_token = WeixinConfig.AccessTokenHelper.GetToken(); openId = token.openid; expires_in = token.expires_in; //TODO: 如果用户已经关注,可以用openid,获取用户信息。 //如果本地已经存储了用户基本信息,建议在本地获取。 userinfo = AdminAPI.GetUserInfo(access_token, openId); } Log.Instence.LogWriteLine(userinfo.JsonString); if (userinfo != null) { redirect_url += "?unionId=" + userinfo.unionid; } //写入cookies AuthorizationManager.SetTicket(true, 1, openId, userinfo.nickname); Thread.Sleep(500);//暂停半秒钟,以等待IOS设置Cookies的延迟 Log.Instence.LogWriteLine(string.Format("OAuth success: identity: {0} , name: {1} , redirect_rul:{2} , expires_in: {3}s ", openId, userinfo.nickname, redirect_url, expires_in)); return(new RedirectResult(redirect_url, true)); }
public ActionResult SeeOrderDetail(string orderid, string code, string state) { try { //CurrentCustomer = null; if (state == "wanlixin") { var token = OAuth2API.GetAccessToken(code, WeixinConfig.AppID, WeixinConfig.AppSecret); string openId = token.openid; return(Redirect("/Order/OrderDetail?orderId=" + orderid + " ")); } return(Content("验证失败4")); } catch (Exception ex) { string st = string.Format("时间:{0},描述:{1}", DateTime.Now, ex.ToString()); Tools.MessBox(st, "//Log//Weixin//OrderDetail"); return(Redirect("/error/index")); } }
public ActionResult DefaultAuthorize(string code, string state) { try { if (state == "wanlixin") { var scope = WeixinConfig.OauthScope; double expires_in = 0; var access_token = ""; var openId = ""; var token = OAuth2API.GetAccessToken(code, WeixinConfig.AppID, WeixinConfig.AppSecret); dynamic userinfo; //access_token = WeixinConfig.TokenHelper.GetToken();//基础支持中的access_token access_token = AccessTokenContainer.TryGetAccessToken(WeixinConfig.AppID, WeixinConfig.AppSecret, true); openId = token.openid; expires_in = token.expires_in; //TODO: 如果用户已经关注,可以用openid,获取用户信息。 userinfo = UserAdminAPI.GetInfo(access_token, openId);//如果本地已经存储了用户基本信息,建议在本地获取。 Tools.MessBox(string.Format("时间:{0},描述:{1}", DateTime.Now, userinfo), "//Log//Weixin//DefaultAuthorize//userinfo//"); //通过api接口,根据openid查找,如果openid已经保存,跳转到”会员积分查询“页面,否则跳转到”输入手机号码页面“ Tools.MessBox("openId:" + openId); var usermodel = WebUtils.Get2 <CustomerNewSelect>(WebConfig.ApiBaseUrl + "WlxApi/GetCustomerNewBySql", openId); //Tools.MessBox("usermodel:"+ usermodel.c_num); if (usermodel != null) { if (!string.IsNullOrEmpty(usermodel.c_num))//c_openid已经更新过 { Customer customer = new Customer(); customer.Phone = usermodel.c_num; Session["Customer"] = customer; h_CustomerNew h_CustomerNew = new h_CustomerNew(); h_CustomerNew.c_num = usermodel.c_num; h_CustomerNew.c_Name = usermodel.c_Name; h_CustomerNew.c_Identity = usermodel.c_Identity; Session["h_CustomerNew"] = h_CustomerNew; return(RedirectToAction("Member", "Home")); } } else { //插入微信信息 LoginService _loginservice = new LoginService(); Customer customer = _loginservice.CustomerLogin(userinfo.nickname, userinfo.openid, "", "", userinfo.headimgurl, Convert.ToInt32(userinfo.sex), userinfo.province, userinfo.city); if (customer != null) { Session["Customer"] = customer; } return(RedirectToAction("Index", "Home")); } } return(Content("验证失败4")); } catch (Exception ex) { string st = string.Format("时间:{0},描述:{1}", DateTime.Now, ex.ToString()); Tools.MessBox(st, "//Log//Weixin//"); return(Redirect("/error/index")); } }
public ActionResult SignUp() { var code = Request.QueryString.Get("code"); if (string.IsNullOrEmpty(code)) { throw new UserFriendlyException("授权失败"); } var access_token_scope = ""; double expires_in = 0; var access_token = ""; var openId = ""; var appId = "wx25750ab6611b4901"; var appSecret = "f178fca842e26a3563e168f7bfb15e58"; var token = OAuth2API.GetAccessToken(code, appId, appSecret); dynamic userinfo; var refreshAccess_token = OAuth2API.RefreshAccess_token(token.refresh_token, appId); //var client = new HttpClient(); //var result = client.GetAsync(string.Format("https://api.weixin.qq.com/sns/oauth2/refresh_token?appid={0}&grant_type=refresh_token&refresh_token={1}", appId, token.refresh_token)).Result; //if (!result.IsSuccessStatusCode) return null; //Logger.Debug(result.Content.ReadAsStringAsync().Result); access_token = refreshAccess_token.access_token; openId = refreshAccess_token.openid; access_token_scope = refreshAccess_token.scope; expires_in = refreshAccess_token.expires_in; //Logger.Debug(access_token); userinfo = OAuth2API.GetUserInfo(access_token, openId); var user = new User { }; var openid = userinfo.openid; if (userinfo != null && !string.IsNullOrEmpty(openid)) { Logger.Debug("openid is" + openid); var u = this._iUserAppService.GetUser(openid); if (u != null) { user = u; } user.HeadImgUrl = userinfo.headimgurl; user.NickName = userinfo.nickname; user.OpenId = userinfo.openid; user.Sex = Convert.ToInt32(userinfo.sex); user.City = userinfo.city; user.Province = userinfo.province; user.Country = userinfo.country; this._iUserAppService.SaveUserInfo(user); ViewBag.UserId = user.Id; } else { throw new UserFriendlyException("授权失败"); } return(View()); }