首页 > 代码库 > C# 微信公众号

C# 微信公众号

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.Configuration;using System.Net;using System.Net.Http;using System.Net.Http.Headers;using Newtonsoft.Json;using Newtonsoft.Json.Linq;namespace Web{    public partial class Test : System.Web.UI.Page    {        //用户id        public string openid = "";        //公众号信息部分        public string appid = ConfigurationManager.AppSettings["AppId"];        public string appsecret = ConfigurationManager.AppSettings["AppSecret"];        public string redirect_uri = HttpUtility.UrlEncode("需返回的URL");        #region 显示页面        public string accesstoken;        public string nickname;        public string sex;        public string headimgurl;        public string province;        public string country;        public string language;        public string city;        public string privilege = "";        public string errorMsg = "";        public string errorUrl = "";        #endregion        protected void Page_Load(object sender, EventArgs e)        {            // 微信官方文档            // https://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html            // /* *微信认证获取openid部分: *临时认证code */            string code = Request["code"];            if (string.IsNullOrEmpty(code))            {                //判断session不存在                if (Session["openid"] == null)                {                    //认证第一步:重定向跳转至认证网址                    // 1.snsapi_base 不弹出授权页面,直接跳转,只能获取用户openid                    string urlbase = string.Format("https://open.weixin.qq.com/connect/oauth2/authorize?appid={0}&redirect_uri={1}&response_type=code&scope=snsapi_base&state=123#wechat_redirect", appid, redirect_uri);                    // 2.snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息)                    string usrinfo = string.Format("https://open.weixin.qq.com/connect/oauth2/authorize?appid={0}&redirect_uri={1}&response_type=code&scope=snsapi_userinfo&state=123#wechat_redirect", appid, redirect_uri);                    Response.Redirect(urlbase);                }                //判断session存在                else                {                    //跳转到前端页面.aspx                    Response.Redirect(Request.Url.ToString());                }                return;            }            //第三步 获得openid            string url = string.Format("https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code", appid, appsecret, code);            string result = HttpHelper.GetResponse(url);            Log.Instance.SaveLog(result);            JObject outputObj = JObject.Parse(result);            if (outputObj["errmsg"] != null)            {                errorMsg = outputObj["errmsg"].ToString();                errorUrl = url;                return;            }            accesstoken = outputObj["access_token"].ToString();            openid = outputObj["openid"].ToString();            GetUserInfo(openid);//通过基础接口获取数据, 不弹出授权页面            GetUserInfo(accesstoken, openid);//通过授权页面获取信息, 会弹出确认页面,需要第一步传入userinfo        }        /// <summary>        /// 通过基础接口获取用户信息        /// </summary>        public void GetUserInfo( string openid )        {            //第一步 获取基础支持access_token            string url = string.Format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}", appid, appsecret);            string result = HttpHelper.GetResponse(url);            Log.Instance.SaveLog(result);            JObject outputObj = JObject.Parse(result);            if (outputObj["errmsg"] != null)            {                errorMsg = outputObj["errmsg"].ToString();                errorUrl = url;                return;            }            string token = outputObj["access_token"].ToString();            //第二步 获取用户基本信息            url = string.Format("https://api.weixin.qq.com/cgi-bin/user/info?access_token={0}&openid={1}", token, openid);            result = HttpHelper.GetResponse(url);            Log.Instance.SaveLog(result);            outputObj = JObject.Parse(result);            if (outputObj["errmsg"] != null)            {                errorMsg = outputObj["errmsg"].ToString();                errorUrl = url;                return;            }            //以下是第四步获得的信息:             nickname = outputObj["nickname"].ToString(); //昵称            sex = outputObj["sex"].ToString()=="1"?"":""; //性别什么的            headimgurl = outputObj["headimgurl"].ToString(); //头像url            province = outputObj["province"].ToString();            country = outputObj["country"].ToString(); ;            language = outputObj["language"].ToString(); ;            city = outputObj["city"].ToString(); ;            //将获得的用户信息填入到session中            Session["openid"] = outputObj["openid"];                    }        /// <summary>        /// 通过网页授权方式获取用户信息        /// </summary>        public void GetUserInfo(string token, string openid)        {            //微信认证部分:第四步 获得更多信息            string url = string.Format("https://api.weixin.qq.com/sns/userinfo?access_token={0}&openid={1}&lang=zh_CN", accesstoken, openid);            string result = HttpHelper.GetResponse(url);            Log.Instance.SaveLog(result);            JObject outputObj = JObject.Parse(result);//将json转为数组            if (outputObj["errmsg"] != null)            {                errorMsg = outputObj["errmsg"].ToString();                errorUrl = url;                return;            }            //以下是第四步获得的信息:             nickname = outputObj["nickname"].ToString(); //昵称            sex = outputObj["sex"].ToString(); //性别什么的            headimgurl = outputObj["headimgurl"].ToString(); //头像url            province = outputObj["province"].ToString(); ;            country = outputObj["country"].ToString(); ;            language = outputObj["language"].ToString(); ;            city = outputObj["city"].ToString(); ;            //将获得的用户信息填入到session中            Session["openid"] = outputObj["openid"];            //转向回入口            //OpenAccess();        }    }}

 

C# 微信公众号