一、在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 微信企业号网页开发流程的更多相关文章

  1. asp.net 微信企业号办公系统-流程设计--保存与发布

    如果流程未设计完时可以先保存,以后再打开接着设计.点击工具栏上的保存按钮即可保存当前流程设计: 如果下次要接着设计,则可以打开该流程继续设计: 如果流程设计完成,可以点击安装按钮来发布流程,流程安装成 ...

  2. asp.net 微信企业号办公系统-流程设计--流转条件设置(路由)

    当一个步骤后面有多个步骤时,可以设置为根据设置条件系统自动判断该流向哪些步骤,也叫路由. 工作流没有单独的路由步骤来设置条件,流程条件通过双击连线弹出条件设置框来设置. 1.sql条件 即通过sql条 ...

  3. asp.net 微信企业号办公系统-流程设计--流程步骤设置-事件设置

    事件设置是设置当前步骤在提交前后或退回前后要执行的一些操作(该事件为服务器事件). 事件格式为:dll名称.命名空间名称.类名.方法名,这里不需要写括号和参数,处理时会自动带上当前流程实例的相关参数. ...

  4. asp.net 微信企业号办公系统-流程设计--流程步骤设置-数据设置

    数据设置是控制在流程处理过程中,当前步骤的数据显示与编辑状态,控制当前步骤哪些字段为只读,隐藏或可编辑.需要配合表单设计器使用.

  5. asp.net 微信企业号办公系统-流程设计--流程步骤设置-按钮设置

    按钮设置是配置当前步骤的处理者可以执行哪些操作,每个按钮都有对应的执行脚本(javascript脚本). 从左边的按钮列表中选择当前步骤需要的按钮. 注意:如果是流程最后一步则要配置完成按钮而不是发送 ...

  6. asp.net 微信企业号办公系统-流程设计--流程步骤设置-策略设置

    策略设置包括当前步骤的流转方式,处理人员,退回策略等设置. 流转类型:当前步骤后面有多个步骤时,此类型选择可以决定后续步骤的发送方式. 1.系统控制:由系统根据您在线上设置的流转条件来判断该发送到哪一 ...

  7. 微信公众平台开放JS-SDK(微信内网页开发工具包)

    微信公众平台开放JS-SDK(微信内网页开发工具包),这次开放接口是质的飞跃,是对开发者和广大用户一个利好的消息.未来的公众号图文消息会更丰富多彩,准备脑洞大开吧!(第三方平台正式支持接入微信公众平台 ...

  8. 微信公众号开发流程,jssdk的使用以及签名算法的实现

    一 开发流程 1 基本配置-登录自己的公众号 A:新型微信认证,认证过的企业号才可以进行自定义菜单中的连接跳转: B:开发基本配置里面进行开发者iD查询,密码查询和重置和ip白名单配置: C:公众号设 ...

  9. 微信小程序开发流程

    2017年1月9日,张小龙在2017微信公开课Pro上发布的小程序正式上线,一夜之间,小程序可谓家喻户晓,但通过接下来的几个月的观察,微信小程序并没有想象中的那么火爆.进入4月以来,微信小程序团队进行 ...

随机推荐

  1. 每天一个Linux命令(32)date命令

          date命令是显示或设置系统时间与日期.        (1)用法:       用法:  date [选项]  [参数]       (2)功能:       功能:  根据指定格式显示 ...

  2. c的详细学习(7)指针学习(一)

    指针是c语言的一个重要概念,指针类型是c语言最有特色的数据类型: *利用指针编写的程序可使调用函数共享变量或数据结构,实现双向数据通信: *可以实现内存空间的动态存储分配:可以提高程序的编译效率和执行 ...

  3. nginx 搭建虚拟主机

    一.排错三部曲 第一步在客户端上ping服务端ip  ping 10.0.0.8 第二部在客户端上telnet服务器端IP.端口  telnet 10.0.0.8 第三部在客户端使用wget命令检测 ...

  4. shell文件相关指令

    文件解压缩tar 请参考文档:http://blog.csdn.net/eroswang/article/details/5555415/ tar -zcvf ${standardpath}${fil ...

  5. android6.0 外部存储设备插拔广播以及获取路径(U盘)【转】

    本文转载自:https://blog.csdn.net/zhouchengxi/article/details/53982222 这里我将U盘作为例子来说明解析. android4.1版本时U盘插拔时 ...

  6. [java]final关键字、finally关键字与finalize()方法

    final关键字: final关键字通常指的是“无法改变的”,使用“无法改变”这样修饰可能出于两个原因:设计或者效率. final可以修饰变量.方法和类. 一.final变量 一个既是static又是 ...

  7. pathinfo()的用法

    pathinfo() 返回一个关联数组包含有 path 的信息. 包括以下的数组元素: [dirname] [basename] [extension] 提示和注释 注释:如果不是要求取得所有单元,则 ...

  8. matlab对点云旋转平移

    1.显示茶壶点云 ptCloud = pcread('teapot.ply');figure(1)pcshow(ptCloud); title('Teapot'); 2.Create a transf ...

  9. spring boot: Bean的初始化和销毁 (一般注入说明(三) AnnotationConfigApplicationContext容器 JSR250注解)

    import org.springframework.context.annotation.AnnotationConfigApplicationContext; 使用AnnotationConfig ...

  10. MySQL常用方法

    1.INSTR,例:INSTR(content,'\"SHOP_DES\"')>0,返回字符串在某一个字段的内容中第一次出现位置,没有为0 2.REPLACE,例:conte ...