/// <summary> /// 获取openid和access_token /// </summary> /// <returns></returns> public ActionResult getOpenid(string code, string state, string goBackUrl) { //string orderXml = "Code:" + code + ",State:" + state; //var fileStream = System.IO.File.OpenWrite(Server.MapPath("~/1.txt")); //fileStream.Write(Encoding.Default.GetBytes(orderXml), 0, Encoding.Default.GetByteCount(orderXml)); //fileStream.Close(); StringBuilder url = new StringBuilder(); url.AppendFormat("https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}", ConfigurationManager.AppSettings["WEPAY_WEB_APPID"].ToString().Trim()); url.AppendFormat("&secret={0}", ConfigurationManager.AppSettings["WEPAY_WEb_AppSecret"].ToString().Trim()); url.AppendFormat("&code={0}&grant_type=authorization_code", code); //url.AppendFormat(" &scope=snsapi_userinfo"); var client = new HttpClient(); var retJson = client.GetAsync(url.ToString()).Result.Content.ReadAsStringAsync().Result; OAuthResponeData oAuth = null; bool ok = false; try { oAuth = JsonConvert.DeserializeObject <OAuthResponeData>(retJson); //var fileStream = System.IO.File.OpenWrite(Server.MapPath("~/1.txt")); //fileStream.Write(Encoding.Default.GetBytes(retJson), 0, Encoding.Default.GetByteCount(retJson)); //fileStream.Close(); ok = (oAuth != null && !string.IsNullOrEmpty(oAuth.openid)); } catch (Exception ex) { //Utils.AppContext.ErrorLog("weixin error", ex.Message, ex); ok = false; } if (!ok) { // Utils.AppContext.ErrorLog("weixin error ret:", retJson); return(RedirectToAction("Login", "Account", new { redirectUrl = goBackUrl, wxLogin = false })); } //var getNameUrl = "https://api.weixin.qq.com/sns/userinfo?access_token=" + oAuth.access_token + "&openid=" + oAuth.openid; //var rtJs = client.GetAsync(getNameUrl).Result.Content.ReadAsStringAsync().Result; //UserInfoR userinfo = null; //userinfo = JsonConvert.DeserializeObject<UserInfoR>(retJson); //if (userinfo) //{ //} return(Redirect(goBackUrl + "?openid=" + oAuth.openid)); }
/// <summary> /// 获得openid /// </summary> /// <param name="code"></param> /// <param name="state"></param> /// <returns></returns> public ActionResult OtherGetOpenId(string code, string state) { StringBuilder url = new StringBuilder(); url.AppendFormat("https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}", ConfigurationManager.AppSettings["AppId"].ToString().Trim()); url.AppendFormat("&secret={0}", ConfigurationManager.AppSettings["AppSecret"].ToString().Trim()); url.AppendFormat("&code={0}&grant_type=authorization_code", code); var client = new HttpClient(); var retJson = client.GetAsync(url.ToString()).Result.Content.ReadAsStringAsync().Result; OAuthResponeData oAuth = null; try { oAuth = JsonConvert.DeserializeObject <OAuthResponeData>(retJson); } catch (Exception ex) { return(Content("<script type='text/javascript'>alert('微信授权失败!');location.href='/Account/Login';</script>")); } return(Redirect("/Account/Login?openid=" + oAuth.openid)); }