《微信开发日志》之OAuth2验证接口
OAuth2接口说明:
企业应用中的URL链接(包括自定义菜单或者消息中的链接),可以通过OAuth2.0验证接口来获取员工的身份信息。
通过此接口获取用户身份会有一定的时间开销。对于频繁获取用户身份的场景,建议采用如下方案:
1、企业应用中的URL链接直接填写企业自己的页面地址
2、用户跳转到企业页面时,企业校验是否有代表用户身份的cookie,此cookie由企业生成
3、如果没有获取到cookie,重定向到OAuth验证链接,获取用户身份后,由企业生成代表用户身份的cookie
4、根据cookie获取用户身份,进入相应的页面
注意,此URL的域名,必须完全匹配企业应用设置项中的'可信域名',否则获取用户信息时会返回50001错误码。
企业获取code
企业如果需要员工在跳转到企业网页时带上员工的身份信息,需构造如下的链接:
| 参数 | 必须 | 说明 |
|---|---|---|
| appid | 是 | 企业的CorpID |
| redirect_uri | 是 | 授权后重定向的回调链接地址,请使用urlencode对链接进行处理 |
| response_type | 是 | 返回类型,此时固定为:code |
| scope | 是 | 应用授权作用域,此时固定为:snsapi_base |
| state | 否 | 重定向后会带上state参数,企业可以填写a-zA-Z0-9的参数值 |
| #wechat_redirect | 是 | 微信终端使用此参数判断是否需要带上身份信息 |
员工点击后,页面将跳转至 redirect_uri/?code=CODE&state=STATE,企业可根据code参数获得员工的userid。
根据code获取成员信息
请求说明
Https请求方式:GET
- 参数说明
| 参数 | 必须 | 说明 |
|---|---|---|
| access_token | 是 | 调用接口凭证 |
| code | 是 | 通过员工授权获取到的code,每次员工授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期 |
| agentid | 是 | 跳转链接时所在的企业应用ID |
- 权限说明
管理员须拥有agent的使用权限;agentid必须和跳转链接时所在的企业应用ID相同。
- 返回结果
a)正确时返回示例如下:
{
"UserId":"USERID",
"DeviceId":"DEVICEID"
}
| 参数 | 说明 |
|---|---|
| UserId | 员工UserID |
| DeviceId | 手机设备号(由微信在安装时随机生成) |
出错时返回示例如下:
{
"errcode": "40029",
"errmsg": "invalid code"
}
--实例
代码如下:
protected void Page_Load(object sender, EventArgs e)
{
//return;
if (!this.IsPostBack)
{
BLL = new bllWX(); //从数据库中获取配置信息
DataTable dt = BLL.GetWXConfig();
string CorpToken = ConvertEx.ToString(dt.Rows[0][tb_WXConfig.CorpToken]);
string CorpID = ConvertEx.ToString(dt.Rows[0][tb_WXConfig.CorpID]);
string EncodingAESKey = ConvertEx.ToString(dt.Rows[0][tb_WXConfig.EncodingAESKey]);
string Secret = ConvertEx.ToString(dt.Rows[0][tb_WXConfig.Secret]);
string AccessToken = ConvertEx.ToString(dt.Rows[0][tb_WXConfig.AccessToken]); CorpCommonData data = CorpCommonData.IniCorpCommonData(AccessToken, CorpID, Secret, "1"); data.accesstokenChanged += data_accesstokenChanged; string code = Request["code"];
handle = new ActiveMessageHandler();
//根据Code参数获得用户ID
var userid = handle.OAuth2_GetUserInfo(code, null, null);
if (ConvertEx.ToInt(userid.errcode, 0) == 0)//获取成功
{
//根据用户ID获得用户信息
var UserModel = handle.GetUserModel(userid.UserId, null);
//var UserModel = handle.GetUserModel("zgs", null);
UserName = UserModel.name;
} }
} /// <summary>
/// 将新的AccessToken写入数据库
/// </summary>
/// <param name="AccessToken"></param>
void data_accesstokenChanged(string AccessToken)
{
BLL.UpdateAccessToken(AccessToken);
}
UserModel是用户信息格式:
/// <summary>
/// 企业员工信息
/// </summary>
public class ModelUser
{
/// <summary>
/// 员工UserID
/// </summary>
public string userid { get; set; }
/// <summary>
/// 成员名称
/// </summary>
public string name { get; set; }
/// <summary>
/// 成员所属部门id列表
/// </summary>
public string department { get; set; }
/// <summary>
/// 职位信息
/// </summary>
public string position { get; set; }
/// <summary>
/// 手机号码
/// </summary>
public string mobile { get; set; }
/// <summary>
/// 性别。gender=0表示男,=1表示女
/// </summary>
public string gender { get; set; }
/// <summary>
/// 办公电话
/// </summary>
public string tel { get; set; }
/// <summary>
/// 邮箱
/// </summary>
public string email { get; set; }
/// <summary>
/// 微信号
/// </summary>
public string weixinid { get; set; }
/// <summary>
/// 头像url。注:如果要获取小图将url最后的"/0"改成"/64"即可
/// </summary>
public string avatar { get; set; }
/// <summary>
/// 关注状态: 1=已关注,2=已冻结,4=未关注
/// </summary>
public string status { get; set; }
/// <summary>
/// 扩展属性
/// </summary>
public string extattr { get; set; } }
效果:


这时候已经完成了OAuth2接口,我们可以根据不同用户展示不同
其中用到自己写的微信开发API

因为刚开始做微信,API功能还在不断完善中,所以还没开源,等功能都实现了再放出来开源
如果有需要,请留言联系!!!!
本节结束
《微信开发日志》之OAuth2验证接口的更多相关文章
- 微信企业号OAuth2验证接口实例(使用SpringMVC)
微信企业号OAuth2验证接口(使用SpringMVC) 企业应用中的URL链接(包含自己定义菜单或者消息中的链接).能够通过OAuth2.0来获取员工的身份信息. 注意.此URL的域名,必须全然匹配 ...
- 微信开发-业务域名、JS接口安全域名、网页授权域名
在微信公众平台上可配置这些域名. 1.业务域名:在微信浏览器中点击文本框,会弹出下面的提示,很不爽,通过配置业务域名可以将该提示去掉 2.JS接口安全域名:分享到朋友圈(js-sdk)时用上,此接口要 ...
- PHP微信开发ReplyModel(封装验证,数据获取,信息返回)
<?phpclass ReplyModel{ //验证token, public function ValidationToken($token){ if(isset($_GET["e ...
- 微信开发网页授权OAuth2.0注意事项
如图所示
- 微信oauth2验证
微信公众号进行oauth2验证时的要求: 需要两个地方配置: (1) Oauth2验证链接中的appid.redirecturi (2) 微信公众号授权回调页面域名: Appid为公众号的ap ...
- 微信开发+百度AI学习:微信网页开发环境搭建
参考微信官方文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115 两步即可获取微信网页开发能力 STEP1: ...
- C#微信开发-微信JS-SDK(1)之通过config接口注入权限验证配置
官方文档是微信JS-SDK的使用步骤http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html#JSSDK.E4.BD.B ...
- 微信开发(2):微信js sdk分享朋友圈,朋友,获取config接口注入权限验证(转)
进行微信开发已经一阵子了,从最初的什么也不懂,到微信授权登录,分享,更改底部菜单,素材管理,等. 今天记录一下微信jssdk 的分享给朋友的功能,获取config接口注入. 官方文档走一下简单说:四步 ...
- Force.com微信开发系列(七)OAuth2.0网页授权
OAuth是一个开放协议,允许用户让第三方应用以安全且标准的方式获取该用户在某一网站上存储的私密资源(如用户个人信息.照片.视频.联系人列表),而无须将用户名和密码提供给第三方应用.本文将详细介绍OA ...
随机推荐
- Office 2007在安装过程中出错-解决办法
1, 可能是因为c:\program files\common files\microsoft Shared\web server Extensions\40\bin目录下缺少Fp4autl.dll, ...
- Linux字符设备驱动结构(一)--cdev结构体、设备号相关知识机械【转】
本文转载自:http://blog.csdn.net/zqixiao_09/article/details/50839042 一.字符设备基础知识 1.设备驱动分类 linux系统将设备分为3类:字符 ...
- zabbix源码安装
Zabbix通过C/S模式采集数据,通过B/S模式在web端展示和配置. 被监控端:主机通过安装agent方式采集数据,网络设备通过SNMP方式采集数据 Server端:通过收集SNMP和agent发 ...
- Mysql数据库知识-Mysql索引总结 mysql mysql数据库 mysql函数
mysql数据库知识-Mysql索引总结: 索引(Index)是帮助MySQL高效获取数据的数据结构. 下边是自己整理的资料与自己的学习总结,,做一个汇总. 一.真的有必要使用索引吗? 不是每一个性能 ...
- 快速稳定的维护PHP
Just to recap, previously we'd have this sort of thing: namespace me\adamcameron\testApp; use Guzzle ...
- SVN上传文件注意事项-------------------养成良好的项目文件上传习惯
项目组的学弟经常把一些.obj文件和debug目录上传到svn,这个习惯很不好,我说了很多次他总改不了,还是写个文档说清楚吧,以后查起来也方便. svn是一种版本控制工具,主要目的是用来管理代 ...
- ftp -i -n -v <<! 其中 -n禁止自动登录到初始连接
<<!说明是输入.如是结束了需要再输入 !例如:ftp -i -n -v <<! 这里的叹号代表是ftp 命令的开始get 文件exit ! 代表ftp的命令 ...
- css 样式设计(一)( 在线150个例子 | 背景 | 文本 | 字体 | 链接 | 列表 | 表格 | 盒模型 | 边框 | 轮廓 | 边距 | 填充 |分组和嵌套 | 尺寸 | 定位 | 浮动 |对齐 )
一.css在线150个例子 http://www.w3cschool.cc/css/css-examples.html 二.背景图片水平方向重复 : body { background-image:u ...
- Cocos2dx框架常用单词(一)
收集了一些Cocos2dx里面主要单词的翻译. Toggle:切换Finite:有限Instant:瞬时interval:间隔Flip:翻转place:座位,放置Target:目标reverse:反向 ...
- Andorid 编程 系统环境安装
内网环境下安装: 1.配置源 :找到公司内部整理的源文件中的内容,将其内容拷贝到系统 源文件 中,并注释掉所有外网链接(如果公司支持内部环境配置,通常会有一个内部源文件) 2.安装jdk, ecli ...