原创
car_5

获取用户信息有很多种,

一、网页授权获取用户基本信息

官方文档见:http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html

使用Dos.WeChat微信开发组件,先定义一个控制器方法:

using Dos.WeChat
namespace UI.Controllers
{
    public class WeChatController : Controller
    {
        public ActionResult OAuth2()
        {
            var dic = UserHelper.GetOauth2AccessToken(new UserParam()
            {
                Code = Request.QueryString["code"]
            });
            //获取用户OpenId
            var openId = dic["openid"];
            //根据用户OpenId以及access_token获取用户昵称、头像
            //前提是你的自定义菜单链接中的scope=snsapi_userinfo
            var usrInfo = UserHelper.GetSnsUserInfo(new WeChatParam()
            {
            	OpenId = openId,
            	AccessToken = dic["access_token"]
            });
            //用户微信头像:usrInfo.HeadImgUrl
            //用户微信昵称:usrInfo.NickName
            //获取state值,然后跳转到相应的页面
            //可以直接把state值写成url,也可以写一个ID,然后你根据ID进行跳转。
            return new RedirectResult(Request.QueryString["state"]);
        }
    }
}

在设置自定义菜单时,url参数不要再直接写地址,而是以下格式:

{"name":"报名学车","type":"view","url":"https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx2e7e0051fed138fe&redirect_uri=http%3A%2F%2Fwww.ITdos.com%2FWeChat%2FOAuth2&response_type=code&scope=snsapi_base&state=http%3A%2F%2Fwww.ITdos.com%2FAbout%2FIndex.html#wechat_redirect","sub_button":[]}

说明:

1、%3A%2F%2F 表示 ://     

2、%2F 表示  /

3、appid,必须填写你的公众号appId

4、redirect_uri,填写上面定义好的OAuth2控制器方法,必须http开头绝对路径

5、state,可以填写你想跳转的页面,或其它你想用的值。上面例子state=http://www.itdos.com/About/Index.html

5、其它的参数可以见本文章上面的官方文档链接


二、微信关注时获取用户信息

在之前定义的MsgCall类中,实现的EventMsgCall接口:

case RecEventMsg.Subscribe:
    var usrInfo = UserHelper.GetUserInfo(new WeChatParam()
    {
    	OpenId = msg.FromUserName
    });
    //用户微信头像:usrInfo.HeadImgUrl
    //用户微信昵称:usrInfo.NickName


待续...