/** * snsapi_userinfo * **/ public async Task <ActionResult> OAuthSnsApiUserInfo() { string code = Request.QueryString["code"]; try { if (!string.IsNullOrEmpty(code)) { OAuthToken oauthToken = await WeChatHepler.GetAsync <OAuthToken>( $"https://api.weixin.qq.com/sns/oauth2/access_token?appid={SettingsManager.WeiXin.AppId}&secret={SettingsManager.WeiXin.AppSecret}&code={code}&grant_type=authorization_code"); if (!string.IsNullOrEmpty(oauthToken?.openid) && !string.IsNullOrEmpty(oauthToken.access_token)) { OAuthUserInfo userInfo = await WeChatHepler.GetAsync <OAuthUserInfo>( $"https://api.weixin.qq.com/sns/userinfo?access_token={oauthToken.access_token}&openid={oauthToken.openid}&lang=zh_CN"); if (userInfo != null) { Log("获取到用户信息nickName:" + userInfo.nickname); ViewData["headImage"] = userInfo.headimgurl; ViewData["openid"] = userInfo.Openid; ViewData["nickName"] = userInfo.nickname; if (userInfo.sex == 0) { ViewData["sex"] = "未知"; } else if (userInfo.sex == 1) { ViewData["sex"] = "男"; } else { ViewData["sex"] = "女"; } ViewData["province"] = userInfo.province; ViewData["city"] = userInfo.city; } else { Log("未获取到用户信息"); } } else { Log("access_token:" + oauthToken.access_token + ",openid:" + oauthToken.openid); } } else { return(Redirect( $"https://open.weixin.qq.com/connect/oauth2/authorize?appid={SettingsManager.WeiXin.AppId}&redirect_uri={Server.UrlEncode("http://" + Request.Url.Host + Url.Action("OAuthSnsApiUserInfo"))}&response_type=code&scope=snsapi_userinfo&state=123456#wechat_redirect")); } } catch (Exception ex) { Log(ex.Message); ViewData["errmsg"] = ex.Message; } return(View()); }
/** * snsapi_base * **/ public async Task <ActionResult> OAuthSnsApiBase() { string code = Request.QueryString["code"]; try { if (!string.IsNullOrEmpty(code)) { OAuthToken oauthToken = await WeChatHepler.GetAsync <OAuthToken>( $"https://api.weixin.qq.com/sns/oauth2/access_token?appid={SettingsManager.WeiXin.AppId}&secret={SettingsManager.WeiXin.AppSecret}&code={code}&grant_type=authorization_code"); string accesstoken = string.Empty; AccessTokenVM tokenVm = await WeChatHepler.GetAccessTokenAsync(SettingsManager.WeiXin.AppId, SettingsManager.WeiXin.AppSecret); if (!string.IsNullOrEmpty(tokenVm?.access_token)) { accesstoken = tokenVm.access_token; } if (oauthToken != null && !string.IsNullOrEmpty(oauthToken.openid)) { OAuthUserInfo userInfo = await WeChatHepler.GetAsync <OAuthUserInfo>( $"https://api.weixin.qq.com/cgi-bin/user/info?access_token={accesstoken}&openid={oauthToken.openid}&lang=zh_CN"); if (userInfo != null) { Log("获取到用户信息nickName:" + userInfo.nickname); // return View(userInfo); //BatchSendMessagesVM message = new BatchSendMessagesVM { Touser = new string[] { userInfo.Openid, "oBjaPuA6nUCz6ufJFtse-3sDYB4I" }, Msgtype = "text", Text = new Message { Content = "测试消息!" } }; var message = new SingleSendMessagesVM { ToUser = userInfo.Openid, MsgType = "text", Text = new Message { Content = "单发测试消息!" } }; string json = JsonConvert.SerializeObject(message, Newtonsoft.Json.Formatting.Indented, new JsonSerializerSettings { ContractResolver = new LowercaseContractResolver() }); Log("post:" + json); HttpContent content = new StringContent(json); content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); var oo = await WeChatHepler.SingleSendMessagesAsync(accesstoken, content); Log("群发消息:" + oo.ErrMsg); ViewData["headImage"] = userInfo.headimgurl; ViewData["openid"] = userInfo.Openid; ViewData["nickName"] = userInfo.nickname; if (userInfo.sex == 0) { ViewData["sex"] = "未知"; } else if (userInfo.sex == 1) { ViewData["sex"] = "男"; } else { ViewData["sex"] = "女"; } ViewData["province"] = userInfo.province; ViewData["city"] = userInfo.city; } else { Log("未获取到用户信息"); } } else { Log("access_token:" + oauthToken.access_token + ",openid:" + oauthToken.openid); } } else { return(Redirect( $"https://open.weixin.qq.com/connect/oauth2/authorize?appid={SettingsManager.WeiXin.AppId}&redirect_uri={"http://" + Request.Url.Host + Url.Action("OAuthSnsApiBase")}&response_type=code&scope=snsapi_base&state=123456#wechat_redirect")); } } catch (Exception ex) { Log(ex.Message); ViewData["errmsg"] = ex.Message; } return(View()); }