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月以来,微信小程序团队进行 ...
随机推荐
- c的详细学习(5)数组
到目前为止,前面介绍的都是属于基本类型的数据.除此之外,C语言还提供了一些更为复杂的数据类型,称为构造类型.数组就是最基本的构造类型.若要针对一批数据进行某种操作,采用数组是一种方便可行的方法 ...
- <再看TCP/IP第一卷>关于网络层及协议细节---IP协议(2)--移动IP及DHCP
题外话:本来想按照互联网的层级自下向上回顾这些协议的,但是今天实在得破个例,DHCP不得不说! 主机从一个网络迁移到另一个网络,那么IP编址的结构就要发生改变,当今主流有如下几种修改方案: (一)改变 ...
- eclipse快捷提示原理
eclipse快捷提示利用的是java反射,因为只有反射才能让eclipse知道类有哪些变量和方法.
- Spring源码分析_01_ idea搭建spring源码阅读环境
二.参考资料 1.Intellij Idea如何导入spring源码
- Git_学习_00_资源帖
1.廖雪峰: (1)Git教程 2.阮一峰: (1)Git分支管理策略 (2)Git远程操作详解 (3)Git 使用规范流程 (4)Github 的清点对象算法 (5)常用 Git 命令清单 (6)G ...
- inux命令学习笔记(5):rm 命令
学习了创建文件和目录的命令mkdir ,今天学习一下linux中删除文件和目录的命令: rm命令. rm是常用的命令,该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目 录及其下的所 ...
- SPOJ375Query on a tree I(树剖+线段树)(询问边)
ιYou are given a tree (an acyclic undirected connected graph) with N nodes, and edges numbered 1, 2, ...
- Angular.forEach用法
1.针对对象循环(key,value) 官方示例: var values = {name: 'misko', gender: 'male'}; var log = []; angular.forEac ...
- Linux环境下,开启tomcat时报transport error 202: bind failed: 地址已在使用
转载自:http://blog.csdn.net/mooncom/article/details/61913813 问题描述:今天我在Linux环境下配置tomcat,在tomcat/conf下的se ...
- python中string和bool的转换
python中字符串"True" 和 "False"转为bool类型时, 不能通过bool(xx)强转. 注意是因为在python中,除了'& ...