Asp.net 微信企业号网页开发流程
一、在pageload方法中获取code
var code = GetCode();
private string GetCode()
{
return HttpContext.Current.Request["code"];
}
二、如果code为空,需要重定向到微信获取code
//当前页面对应的外网地址
string redirect_url = "http://6018.ynedut.cn/PpWordOrder/default.aspx";
redirect_url = HttpUtility.UrlEncode(redirect_url);
var url = WeixinOauth2.GetCodeUrl(redirect_url);
HttpContext.Current.Response.Redirect(url);
return;
}
#region ****************获取codeurl****************
/// <summary>
/// 获取codeurl
/// </summary>
/// <param name="redirectUri"></param>
/// <returns></returns>
public static string GetCodeUrl(string redirectUri)
{
return string.Format(
"https://open.weixin.qq.com/connect/oauth2/authorize?appid={0}&redirect_uri={1}&response_type=code&scope=snsapi_userinfo&agentid={3}&state={2}#wechat_redirect",
PubConstant.AppId, redirectUri, new Random().Next(, ).ToString(),
PubConstant.AgentId);
} #endregion
三、根据code获取用户信息
注:code的有效时间为10分钟,并且只能使用一次,所以这里建议在load方法里直接获取用户信息,并写入cookie中
/// <summary>
/// 获取用户信息
/// </summary>
/// <param name="code"></param>
/// <returns></returns>
public static UserInfo GetUserInfo(string code)
{
var token = GetToken();
var url = String.Format("https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token={0}&code={1}", token,
code);
string strResponse = HttpHelper.HttpGet(url);
return JsonConvert.DeserializeObject<UserInfo>(strResponse);
}
public class UserInfo
{
public string UserId { get; set; }
public string DeviceId { get; set; }
[JsonProperty("user_ticket")]
public string User_ticket { get; set; }
[JsonProperty("expires_in")]
public string Expires_in { get; set; }
}
获取用户信息
/// <summary>
/// 获取用户详细信息(包含了获取用户信息操作)
/// </summary>
/// <param name="code"></param>
/// <returns></returns>
public static UserDetailInfo GetUserDetailInfo(string code)
{
var userInfo = GetUserInfo(code);
var url = String.Format(
"https://qyapi.weixin.qq.com/cgi-bin/user/getuserdetail?access_token={0}", GetToken());
JObject obj = new JObject();
obj["user_ticket"] = userInfo.User_ticket;
var postDataStr = obj.ToString();
string strResponse = HttpHelper.HttpPost(url, postDataStr);
return JsonConvert.DeserializeObject<UserDetailInfo>(strResponse);
}
public class UserDetailInfo
{
/// <summary>
/// 成员UserID
/// </summary>
[JsonProperty("userid")]
public string UserId { get; set; } /// <summary>
/// 成员姓名
/// </summary>
[JsonProperty("name")]
public string Name { get; set; } /// <summary>
/// 成员所属部门
/// </summary>
[JsonProperty("department")]
public List<int> Department { get; set; } /// <summary>
/// 职位信息
/// </summary>
[JsonProperty("position")]
public string Position { get; set; } /// <summary>
/// 成员手机号,仅在用户同意snsapi_privateinfo授权时返回
/// </summary>
[JsonProperty("mobile")]
public string Mobile { get; set; } /// <summary>
/// 性别。0表示未定义,1表示男性,2表示女性
/// </summary>
[JsonProperty("gender")]
public string Gender { get; set; } /// <summary>
/// 成员邮箱,仅在用户同意snsapi_privateinfo授权时返回
/// </summary>
[JsonProperty("email")]
public string Email { get; set; } /// <summary>
/// 头像url。注:如果要获取小图将url最后的”/0”改成”/64”即可
/// </summary>
[JsonProperty("avatar")]
public string Avatar { get; set; } }
获取用户详细信息
Asp.net 微信企业号网页开发流程的更多相关文章
- asp.net 微信企业号办公系统-流程设计--保存与发布
如果流程未设计完时可以先保存,以后再打开接着设计.点击工具栏上的保存按钮即可保存当前流程设计: 如果下次要接着设计,则可以打开该流程继续设计: 如果流程设计完成,可以点击安装按钮来发布流程,流程安装成 ...
- asp.net 微信企业号办公系统-流程设计--流转条件设置(路由)
当一个步骤后面有多个步骤时,可以设置为根据设置条件系统自动判断该流向哪些步骤,也叫路由. 工作流没有单独的路由步骤来设置条件,流程条件通过双击连线弹出条件设置框来设置. 1.sql条件 即通过sql条 ...
- asp.net 微信企业号办公系统-流程设计--流程步骤设置-事件设置
事件设置是设置当前步骤在提交前后或退回前后要执行的一些操作(该事件为服务器事件). 事件格式为:dll名称.命名空间名称.类名.方法名,这里不需要写括号和参数,处理时会自动带上当前流程实例的相关参数. ...
- asp.net 微信企业号办公系统-流程设计--流程步骤设置-数据设置
数据设置是控制在流程处理过程中,当前步骤的数据显示与编辑状态,控制当前步骤哪些字段为只读,隐藏或可编辑.需要配合表单设计器使用.
- asp.net 微信企业号办公系统-流程设计--流程步骤设置-按钮设置
按钮设置是配置当前步骤的处理者可以执行哪些操作,每个按钮都有对应的执行脚本(javascript脚本). 从左边的按钮列表中选择当前步骤需要的按钮. 注意:如果是流程最后一步则要配置完成按钮而不是发送 ...
- asp.net 微信企业号办公系统-流程设计--流程步骤设置-策略设置
策略设置包括当前步骤的流转方式,处理人员,退回策略等设置. 流转类型:当前步骤后面有多个步骤时,此类型选择可以决定后续步骤的发送方式. 1.系统控制:由系统根据您在线上设置的流转条件来判断该发送到哪一 ...
- 微信公众平台开放JS-SDK(微信内网页开发工具包)
微信公众平台开放JS-SDK(微信内网页开发工具包),这次开放接口是质的飞跃,是对开发者和广大用户一个利好的消息.未来的公众号图文消息会更丰富多彩,准备脑洞大开吧!(第三方平台正式支持接入微信公众平台 ...
- 微信公众号开发流程,jssdk的使用以及签名算法的实现
一 开发流程 1 基本配置-登录自己的公众号 A:新型微信认证,认证过的企业号才可以进行自定义菜单中的连接跳转: B:开发基本配置里面进行开发者iD查询,密码查询和重置和ip白名单配置: C:公众号设 ...
- 微信小程序开发流程
2017年1月9日,张小龙在2017微信公开课Pro上发布的小程序正式上线,一夜之间,小程序可谓家喻户晓,但通过接下来的几个月的观察,微信小程序并没有想象中的那么火爆.进入4月以来,微信小程序团队进行 ...
随机推荐
- Stream computing
stream data 从广义上说,所有大数据的生成均可以看作是一连串发生的离散事件.这些离散的事件以时间轴为维度进行观看就形成了一条条事件流/数据流.不同于传统的离线数据,流数据是指由数千个数据源持 ...
- 07 09&10
0709: 排名还是不高,毕竟没切出来题. 第一题dalao: 要求你做一个三维数点,只回答最终有多少个点对的状态是完全小于(可比?)的.(n<=2000000) 特殊限制是三维都是随机排列. ...
- castle windsor学习-----Registering components one-by-one 注册类型
1.在容器中注册一个类型 container.Register( Component.For<IMyService>() .ImplementedBy<MyServiceImpl&g ...
- HIVE- 大数据运维之hive管理
我现在在一家公司负责大数据平台(CDH平台)的运维管理,最常遇见的问题我总结出来,并且继续在下面更新.希望方便自己以后trouble shooting以及方便各位同行解决问题与学习. 关于做运维有几个 ...
- R语言矩阵运算
R语言矩阵运算 主要包括以下内容:创建矩阵向量:矩阵加减,乘积:矩阵的逆:行列式的值:特征值与特征向量:QR分解:奇异值分解:广义逆:backsolve与fowardsolve函数:取矩阵的上下三角元 ...
- httpRequest.CookieContainer= cookie 与 httpRequest.Headers.Add("Cookie", cookie)
这两天做了一个获取cookie并且携带此cookie去请求另外一个url地址,中间携带cookie用了两种方式:1. httpRequest.CookieContainer= cookie (此coo ...
- dos命令行中不同磁盘的调转
windows下,dos中不同磁盘的跳转: 直接 盘符+回车: 如跳转到d盘: D:回车即可 : Microsoft Windows [版本 10.0.10586] (c) 2015 Microsof ...
- PHP限制IP访问 只允许指定IP访问 允许*号通配符过滤IP
/** * 检测访问的ip是否为规定的允许的ip * Enter description here ... */ function check_ip(){ $ALLOWED_IP=array('192 ...
- Unity3D之Mesh(七)绘制长方体
前言: 从现在开始,终于感觉进入一点点正题了!动态创建三维立体模型mesh!依然从简单入手:长方体. 一.基本思路 由于是创建长方体mesh,由之前的研究得知,两个数据必须要有,即:顶点的数据:ver ...
- selenium-查看selenium API
pydoc是Python自带的模块,主要用于从python模块中自动生成文档,这些文档可以基于文本呈现的.也可以生成WEB 页面的,还可以在服务器上以浏览器的方式呈现! 一.pydoc 1.到底什么是 ...