.NET 微信开发之 获取用户数据

通过微信接口获取用户信息主要分为以下几个步骤:

a、获取公众号的access_token

b、通过查询所有用户OPenid接口获取所有用户。

string url = "https://api.weixin.qq.com/cgi-bin/user/get?access_token=" + access_token;

c、通过获取用户openid,然后通过openid获取用户数据

d、把用户信息添加到数据库中。

1、参数化查询以及添加用户信息到数据库方法

 public void AddToDataBase(UserJson userInfo)
        {
            using (SqlConnection conn = new SqlConnection(connStrings))
            {
                conn.Open();
                // openid, subscribe, nickname, sex, language, city, province, country, headimgurl, subscribetime, remark="";
                string cmdText = @"insert into UserInfo values(@openid,@subscribe,@nickname,@sex,@language,@city,
                @province,@country,@headimgurl,@subscribetime,@remark)";
                SqlCommand cmd = new SqlCommand(cmdText, conn);
                cmd.Parameters.AddWithValue("@openid",userInfo.openid);
                cmd.Parameters.AddWithValue("@subscribe",userInfo.subscribe );
                cmd.Parameters.AddWithValue("@nickname",userInfo.nickname);
                cmd.Parameters.AddWithValue("@sex", userInfo.sex);
                cmd.Parameters.AddWithValue("@language",userInfo.language );
                cmd.Parameters.AddWithValue("@city", userInfo.city);
                cmd.Parameters.AddWithValue("@province",userInfo.province);
                cmd.Parameters.AddWithValue("@country", userInfo.country);
                cmd.Parameters.AddWithValue("@headimgurl",userInfo.headimgurl);
                cmd.Parameters.AddWithValue("@subscribetime",userInfo.subscribe_time);
                cmd.Parameters.AddWithValue("@remark", userInfo.remark);
                int res = cmd.ExecuteNonQuery();
            }
        }

2、通过Openid调用微信接口获取用户数据

 public void GetUserInfo(string openid)
        {
            string url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=" + access_token + "&openid=" + openid + "&lang=zh_CN";
            string result = HttpGet(url, "");
            // json 反序列化为对象
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            UserJson UserInfo = serializer.Deserialize<UserJson>(result);  //通过这种方法反序列化,不出因为出现特殊字符而出错
            AddToDataBase(UserInfo);
        }

3、获取所有openid

  string url = "https://api.weixin.qq.com/cgi-bin/user/get?access_token=" + access_token;
                string openidList = HttpGet(url, "");
                List<string> list = new List<string>();
                JavaScriptSerializer serializer = new JavaScriptSerializer();
                UserListJsonResult result = serializer.Deserialize<UserListJsonResult>(openidList); //通过这种方法,反序列化成功
              //  UserListJsonResult result = JsonHelper.GetObjFromJson<UserListJsonResult>(openidList);

4、添加用户数据到数据库所需的类

 /// <summary>
        /// 获取关注用户列表的Json结果
        /// </summary>
        public class UserListJsonResult
        {
            /// <summary>
            /// 关注该公众账号的总用户数
            /// </summary>
            public int total { get; set; }

            /// <summary>
            /// 拉取的OPENID个数,最大值为10000
            /// </summary>
            public int count { get; set; }

            /// <summary>
            /// 列表数据,OPENID的列表
            /// </summary>
            public OpenIdListData data { get; set; }

            /// <summary>
            /// 拉取列表的后一个用户的OPENID
            /// </summary>
            public string next_openid { get; set; }
        }

        /// <summary>
        /// 列表数据,OPENID的列表
        /// </summary>
        public class OpenIdListData
        {
            /// <summary>
            /// OPENID的列表
            /// </summary>
            public List<string> openid { get; set; }
        }

        /// <summary>
        /// 高级接口获取的用户信息。
        /// 在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID
        /// (加密后的微信号,每个用户对每个公众号的OpenID是唯一的。对于不同公众号,同一用户的openid不同)。
        /// 公众号可通过本接口来根据OpenID获取用户基本信息,包括昵称、头像、性别、所在城市、语言和关注时间。
        /// </summary>
        public class UserJson
        {
            /// <summary>
            /// 用户是否订阅该公众号标识,值为0时,代表此用户没有关注该公众号,拉取不到其余信息。
            /// </summary>
            public string subscribe { get; set; }

            /// <summary>
            /// 用户的标识,对当前公众号唯一
            /// </summary>
            public string openid { get; set; }

            /// <summary>
            /// 用户的昵称
            /// </summary>
            public string nickname { get; set; }

            /// <summary>
            /// 用户的性别,值为1时是男性,值为2时是女性,值为0时是未知
            /// </summary>
            public string sex { get; set; }

            /// <summary>
            /// 用户的语言,简体中文为zh_CN
            /// </summary>
            public string language { get; set; }

            /// <summary>
            /// 用户所在城市
            /// </summary>
            public string city { get; set; }

            /// <summary>
            /// 用户所在省份
            /// </summary>
            public string province { get; set; }

            /// <summary>
            /// 用户所在国家
            /// </summary>
            public string country { get; set; }

            /// <summary>
            /// 用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空
            /// </summary>
            public string headimgurl { get; set; }

            /// <summary>
            /// 用户关注时间,为时间戳。如果用户曾多次关注,则取最后关注时间
            /// </summary>
            public string subscribe_time { get; set; }

            public string remark { get; set; }
        }
时间: 2024-10-23 13:13:17

.NET 微信开发之 获取用户数据的相关文章

c# 微信开发 《获取用户的信息》

public const string WeiXin_User_GetInfoUrl = "https://api.weixin.qq.com/cgi-bin/user/info?access_token={0}&openid={1}&lang=zh_CN"; /// <summary> /// 根据OpenID 获取用户在微信的基本信息(需关注公众号) /// </summary> /// <param name="openId

微信开发一获取用户授权(静默授权方式)

/// <summary> /// 获取用户授权返回json序列化为UserAuthorizeInfo /// </summary> /// <param name="code"></param> /// <returns></returns> public static UserAuthorizeInfo GetDicUserAuthorize(string code) { string url = "

微信开发之 获取用户地址

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Web.Security; using System.Web.Script.Serialization; using sohovan.com.wxapi; namespace WXKF { public class JsApi { JavaScriptSerializer Jss = new Java

C#开发微信门户及应用(14)-在微信菜单中采用重定向获取用户数据

我曾经在系列文章中的<C#开发微信门户及应用(11)--微信菜单的多种表现方式介绍>中介绍了微信菜单里面的重定向操作,通过这个重定向操作,我们可以获取一个code值,然后获取用户的openID,进而就能获取到更多的用户信息,这个在会员信息的场景里面用的很多,本篇介绍在网站中迅速配置这样的菜单链接,并介绍如何在后台获取相关的用户信息,实现页面数据个性化的展现操作. 我们知道,微信的自定义菜单分为两大类,分别对应Click类型和View类型的,而重定向属于View类型的一种,如下所示. 1.微信重

微信公众平台开发(85) 获取用户地理位置

本文介绍在微信公众平台上如何使用高级接口开发获取用户地理位置的功能. 一.获取用户地理位置接口 开通了上报地理位置接口的公众号,用户在关注后进入公众号会话时,会弹框让用户确认是否允许公众号使用其地理位置.弹框只在关注后出现一次,用户以后可以在公众号详情页面进行操作. 用户同意上报地理位置后,每次进入公众号会话时,都会在进入时上报地理位置,上报地理位置以推送XML数据包到开发者填写的URL来实现. 推送XML数据包示例: <xml> <ToUserName><![CDATA[t

微信公众平台开发(86) 获取用户基本信息

本文介绍在微信公众平台上如何使用高级接口开发获取用户基本信息的功能. 一.获取用户基本信息接口 在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的.对于不同公众号,同一用户的openid不同).公众号可通过本接口来根据OpenID获取用户基本信息,包括昵称.头像.性别.所在城市.语言和关注时间. 获取用户基本信息 开发者可通过OpenID来获取用户基本信息.请使用https协议. 接口调用请求说明 http请求方式: GE

微信获取用户数据后台写法,author2.0认证

1 /* 微信授权接口 */ 2 //1.设置路由 3 router.get('/wechat/userinfo', function(req, res) { 4 var cb = req.query.cb; 5 //设置cookie 6 res.cookie(wechat_userinfo_callback_url, cb); 7 var url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + appi

微信小程序-获取用户信息和openid,session_key,

1:微信小程序获取用户信息:比如常用的 avatarUrl (用户头像),nickName (用户名称) 等等, (1):获取用户信息调用 wx.getUserInfo 代码如下: 直接请求接口就可以了,随后把数据存放到storage中,下次直接取 就不用再请求接口,, 2:获取 openid (1):请求wx.login 接口,代码如下: url:是微信提供的 appid:是小程序的appid secret:是小程序开发设置的 AppSecret 只要获取到这两项,用户信息可以用于页面,ope

微信公众号获取用户信息致跳过的坑

有一段时间没有搞微信开发了 ,今天突然要改一下程序! 回头一看 微信的帮助文档太tm的稀烂的,太难懂了,这做个笔记以后看着方便 微信有2个ACCESS_TOKEN, 1,基础接口的token 获取接口是 https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET 2,用户网页授权access_token 获取接口地址是 https://api.weixin