Magicodes.WeiChat——使用OAuth 2.0获取微信用户信息

使用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; }

}

时间: 2024-08-24 11:37:15

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

Magicodes.WeiChat——WeChatOAuthTest(网页授权获取用户基本信息)

Demo访问地址:http://wechat.magicodes.net/app/AppDemo/WeChatOAuthTest?tenantId=1 关于公众号如何获取用户信息,请参考此文档:http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html WeChatOAuthTest演示了如何通过特性"WeChatOAuth"通过微信网页授权获取用户基本信息. 1.配置权限 在开始之前,需要在开发者中心修改

后台-第三方授权登录就是获取从第三方获取到用户信息,然后再注册一个账户?

问题描述 第三方授权登录就是获取从第三方获取到用户信息,然后再注册一个账户? 第三方授权登录就是获取从第三方获取到用户信息,然后再注册一个账户? 比如微信授权 知乎,就是获取用户在微信注册的信息,然后用这些信息在知乎上自动注册一个新用户? 是这个原理吗?这样整个授权过程就没后台什么事了,对吧? 解决方案 没有问题......... 解决方案二: 应该是....... 解决方案三: 一.完全的第三方授权登录是本系统不需要账号的,就用第三方提供的账号. 二.在本系统已经有账号管理的前提下,再附加第三

钉钉手机端应用获取当前用户信息流程

先吐个槽,钉钉的"开发者中心"是直接对接的阿里云的后台,跳来跳去很容易懵圈,再加上钉钉的文档,它内容倒是有,但是组织方式不是按流程来的,而是按模块来的,这样的结果就是你要通过文档去了解某个完整的流程怎么处理,也要跳来跳去,转一圈下来看得都有点恶心了. 这里说的"获取当前用户信息",最有价值的一点,是获取手机端当前用户的在某企业的一个工号(至于到底是不是工号,或者其它的标识,那是管理员在后台自己维护的).有了这个用户标识,就可以实现"直接登录"等功

js获取浏览器用户信息再创建不同版本的flash组件

这是一款利用了在flash网站的代码,他是利用js获取浏览器用户信息再创建不同版本的flash组件实例,这样很好的兼容大部份主流浏览器就ok了. */ var isie  = (navigator.appversion.indexof("msie") != -1) ? true : false; var iswin = (navigator.appversion.tolowercase().indexof("win") != -1) ? true : false;

qq用户信息-怎么样获取QQ用户信息

问题描述 怎么样获取QQ用户信息 请问各位大神,怎么样才能从后台获取到当前QQ用户的信息呢,QQ用户已经登录了,也不用授权,请问哪位知道,帮帮我啊 解决方案 在获取sso授权成功后(这是能获取用户信息的前提,没获取成功的就sorry啦). 需要用到UserInfo的实例: UserInfo mInfo; mInfo.getUserInfo(new BaseUiListener(this,"get_simple_userinfo")); 在OpenAPI的回调中处理消息就可以了. 能获取

微信 用户信息-微信网页获取用户信息

问题描述 微信网页获取用户信息 刚接触微信开发,想请教下大家,如何在微信的网页里去获取进来的用户基本信息 比如用户A,在我数据里已记录过,他就能看到网页里所有内容 用户B,没有在我数据库里有记录,那他只能看到一部分信息 我就先获取用户的信息与我数据库做匹配. 在微信本身的界面,不进入到微信网页模式我知道相关参数,但是如何传过去微信网页就不太清楚 解决方案 微信不是有提供接口使用的吗? 解决方案二: 微信不是有提供接口使用的吗?

Magicodes.WeiChat——版本发布历史

购买地址:https://item.taobao.com/item.htm?id=520205558575 您可以在新标签页打开此图,以查看原始图片. Magicodes.WeiChat为湖南心莱信息科技有限公司Magicodes系列产品之一,已获得软件著作权证书. V4.5 (2017.12.20) 事件简单封装,主要用于模板消息动态推送. 支持事件触发 支持事件侦听 支持侦听操作处理(目前仅支持模板消息处理) 支持事件参数(IEventData),其中WeChatEventDataBase为

微信开发笔记——微信网页登录授权,获取用户信息

原文:微信开发笔记--微信网页登录授权,获取用户信息 微信网页授权,获取用户的微信官方API文档地址:http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html 三次握手微信认证流程(我自己简称三次握手): 1.用户同意授权,获取code 2.通过code换取网页授权access_token,用户openId等信息 3.通过access_token和用户的openId获取该用户的用户信息 思路: 经过研究,我这边的思

asp.net版微信网页登录授权,获取用户信息例子

asp.net版微信网页登录授权必须要是微信公众号并且类型为"服务号" 首先大家要看下微信的API文档. 微信网页授权,获取用户的微信官方API文档地址: http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html 微信认证流程: 1 第一步:用户同意授权,获取code 2 第二步:通过code换取网页授权access_token 3 第三步:刷新access_token(如果需要) 4 第四步:拉取用户信