使用Magicodes.WeiChat,可以很方便的获取到微信用户的信息。在使用OAuth 2.0之前,你先需要做以下操作:

1)在开发者中心修改【网页授权获取用户基本信息】,在弹出的界面输入自己的根域名。比如:weichat.chinacloudsites.cn

如下图所示:

2)配置菜单或者链接(如果使用特性“WeChatOAuth”,本步骤可以略过,这里只是介绍下原理,具体请参考步骤3的说明)。Magicodes.WeiChat在控制器WeiChatController中进行处理,配置路径更加简短和简单,如:http://weichat.chinacloudsites.cn/WeiChat/OAuth?redirectUrl=http://weichat.chinacloudsites.cn/WeChat/Test。其中,redirectUrl即为跳转页面地址。Magicodes.WeiChat会生成微信OAuth链接,极大的减少错误的可能性。生成链接示例如下:https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx941100f605a8c3bd&redirect_uri=http%3A%2F%2Fweichat.chinacloudsites.cn%2FWeChat%2FTest&response_type=code&scope=snsapi_userinfo&state=weichat#wechat_redirect

3)在目标页面即可获取微信用户信息,获取代码如下所示:

// GET: WeChat/Test

[AllowAnonymous]

public ActionResult Index(string code)

{

if (string.IsNullOrEmpty(code))

{

return Content("您拒绝了授权!");

}

//通过,用code换取access_token

var result = OAuthApi.GetAccessToken(WeixinHelper.appId, WeixinHelper.appSecret, code);

if (result.errcode != ReturnCode.请求成功)

{

return Content("错误:" + result.errmsg);

}

//已关注,可以得到详细信息

var userInfo = OAuthApi.GetUserInfo(result.access_token, result.openid);

return View(userInfo);

}

以上流程比较繁琐,Magicodes.WeiChat封装了一个筛选器,以便更简便的获取到用户的信息。如以下代码所示:

    [AllowAnonymous]
    public class TestController : Controller
    {
        // GET: WeChat/Test
        [AllowAnonymous]
        [WeChatOAuth]
        public ActionResult Index()
        {
            return View(WeiChatApplicationContext.Current.WeiChatUser);
        }
    }

然后,我们来看Index视图:

@model WeiChat_User
@{
    ViewBag.Title = "Index";
    Layout = "~/Areas/WeChat/Views/Shared/_Layout.cshtml";
}
<h2>您的微信信息如下:</h2>
<h2>昵称:@Model.NickName</h2>
<h2>城市:@Model.City</h2>

显示效果如下:

注意:必须在Action上添加特性“WeChatOAuth”,然后就可以在代码中通过WeiChatApplicationContext.Current.WeiChatUser拿到微信用户信息了。

微信用户信息内容如下:

public class WeiChat_User

{

/// <summary>

/// 用户的标识,对当前公众号唯一

/// </summary>

[Key]

[Display(Name = "OpenId")]

public string OpenId { get; set; }

/// <summary>

/// 用户是否订阅该公众号标识

/// </summary>

[Display(Name = "是否订阅")]

public bool Subscribe { get; set; }

/// <summary>

/// 用户的昵称

/// </summary>

[Display(Name = "昵称")]

public string NickName { get; set; }

/// <summary>

/// 用户的性别,值为1时是男性,值为2时是女性,值为0时是未知

/// </summary>

[Display(Name = "性别")]

public int Sex { get; set; }

/// <summary>

/// 用户所在城市

/// </summary>

[Display(Name = "所在城市")]

public string City { get; set; }

/// <summary>

/// 用户所在国家

/// </summary>

[Display(Name = "所在国家")]

public string Country { get; set; }

/// <summary>

/// 用户所在省份

/// </summary>

[Display(Name = "所在省份")]

public string Province { get; set; }

/// <summary>

/// 用户的语言,简体中文为zh_CN

/// </summary>

[Display(Name = "语言")]

public string Language { get; set; }

/// <summary>

/// 用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空。若用户更换头像,原有头像URL将失效。

/// </summary>

[Display(Name = "头像")]

public string HeadImgUrl { get; set; }

/// <summary>

/// 用户关注时间,为时间戳。如果用户曾多次关注,则取最后关注时间

/// </summary>

[Display(Name = "关注时间")]

public DateTime SubscribeTime { get; set; }

/// <summary>

/// 只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段。详见:获取用户个人信息(UnionID机制)

/// </summary>

public string UnionId { get; set; }

/// <summary>

/// 公众号运营者对粉丝的备注,公众号运营者可在微信公众平台用户管理界面对粉丝添加备注

/// </summary>

[Display(Name = "备注")]

public string Remark { get; set; }

/// <summary>

/// 用户所在的分组ID

/// </summary>

public int GroupId { get; set; }

}

Magicodes.WeiChat——使用OAuth 2.0获取微信用户信息的更多相关文章

  1. 微信公众平台开发—利用OAuth2.0获取微信用户基本信息

    在借鉴前两篇获取微信用户基本信息的基础下,本人也总结整理了一些个人笔记:如何通过OAuth2.0获取微信用户信息 1.首先在某微信平台下配置OAuth2.0授权回调页面: 2.通过appid构造url ...

  2. 小白学react之网页获取微信用户信息

    通过上一篇<小白学react之EJS模版实战>我们学习了怎样通过EJS模版生成我们高定制化的index.html文件. 本篇我们将会继续延续我们的alt-tutorial项目的实战计划.去 ...

  3. SpringBoot中获取微信用户信息从未如此简单!

    前言 不知道你是否参加过拼多多上邀请微信好友砍价功能,这个功能实现首先需要考虑的就是获取微信用户的信息.获取用户信息就是获取公众号下微信用户的信息,今天我就来讲讲如何从公众号下获取微信用户信息. 需要 ...

  4. python flask获取微信用户信息报404,nginx问题

    在学习flask与微信公众号时问题,发现测试自动回复/wechat8008时正常,而测试获取微信用户信息/wechat8008/index时出现404.查询资料后收发是nginx配置问题. 在loca ...

  5. java、JavaScript获取微信用户信息登录优化方案

    1.获取微信用户信息要调用微信的好几个接口,再加上自己系统的接口就会变的很慢,影响用户体验,之前走过的弯路我就不赘述了,直接说新的方案. 2.第一步都是向微信发起获取用户code请求: 请求接口:ht ...

  6. php获取微信用户信息(没测试过)

    <?php /** * 通过$appid.$appsecret获得基础支持的接口唯一凭证access_token,返回值为array类型 */ function get_access_token ...

  7. python flask获取微信用户信息流程

    需要了解的几个url 用户第一次访问时的url,包含以下几个参数 https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID& ...

  8. Java 微信登录授权后获取微信用户信息昵称乱码问题解决

    String getUserInfoUrl = "https://api.weixin.qq.com/sns/userinfo?access_token="+access_toke ...

  9. Java微信公众平台开发(十二)--微信用户信息的获取

    转自:http://www.cuiyongzhi.com/post/56.html 前面的文章有讲到微信的一系列开发文章,包括token获取.菜单创建等,在这一篇将讲述在微信公众平台开发中如何获取微信 ...

随机推荐

  1. android 第一次作业

    天气预报界面截图: 源码coding地址:https://coding.net/u/dsy1600802076/p/android/git/tree/master

  2. numpy地址

    pip安装  http://zhidao.baidu.com/link?url=nkRwDOZ1ALMjRsWHGMR1nLSIyuVycoD4j-mhGDsYptPwDRGYcE8u4_B9VvYk ...

  3. linux学习历程-不熟悉的linux命令

    一:man(执行查看帮助命令) 二:常用的系统工作命令 1:echo echo命令用于显示在终端输出字符串或变量提取后的值,格式“echo [字符串]|[$变量]” 2:date 用于显示系统的时间和 ...

  4. 远程shell脚本执行工具类

    /** * 远程shell脚本执行工具类 */public class RemoteShellExecutorUtils { private static final Logger logger = ...

  5. 错误:Java HotSpot(TM) 64-Bit Server VM warning: Insufficient space for shared memory file

    Java HotSpot(TM) 64-Bit Server VM warning: Insufficient space for shared memory file: /tmp/hsperfdat ...

  6. 什么是URL,URL格式

    什么是URL: 互联网里有很多的网页,大家都需要能够互相访问,就比如在一栋大楼里,有很多的房间,不同房间里的人都想能去任意的其他房间里去,那怎么能够达到这样的想法呢? 很简单,每个房间都挂一个门牌号就 ...

  7. 关于使用freemarker导出文档的使用

    7.FreeMarker导出word文件,模板:template.ftl/** * 为word加载数据插值 * * @throws IOException */ public void exportW ...

  8. 中文转拼音without CJK

    Xamarin写Android程序时,通常要使用按中文首字母分组显示(如通讯录) . 于是需要被迫包含CJK,不过包含后包肯定是会变大的,于是....自己写了一个硬枚举的中文转拼音的类. 原理是这样的 ...

  9. C++ : cin.get()函数和cin函数的使用

    笔者由于自己忘记了cin函数怎么用,所以这里趁自己复习C++的空子正好可以做做记录. 1.cin>>          用法1:最基本,也是最常用的用法,输入一个数字: #include ...

  10. 【RL-TCPnet网络教程】第20章 RL-TCPnet之BSD Socket客户端

    第20章      RL-TCPnet之BSD Socket客户端 本章节为大家讲解RL-TCPnet的BSD Socket,学习本章节前,务必要优先学习第18章的Socket基础知识.有了这些基础知 ...