一、在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. nodejs模块之fs&&stream

    nodejs的文件系统fs模块,可以实现对文件.目录等的操作,stream模块实现对文件数据的断续读写操作 一.文件操作 fs.readFile(file[,options],callback) 异步 ...

  2. Docker 架构篇

    Docker 的核心组件包括: Docker 客户端 - Client Docker 服务器 - Docker daemon Docker 镜像 - Image Registry Docker 容器 ...

  3. EntityFramework 学习 一 三种开发模式

    Entity Framework支持3种不同的开发方法 1.Code First 2.Model First 3.Database First Code First 使用Code First开发模式, ...

  4. Python的标准GUI:Tkinter的组件

    Label组件: Label组件用于显示文本和图像,并且使用双重缓冲 用法: 使用Label组件可以指定想要显示的内容(文本.位图或者图片): from tkinter import * master ...

  5. 深入理解JVM - 早期(编译期)优化

    Java“编译期”是一段“不确定”的操作过程:可能是指一个前端编译器(编译器的前端)把*.java文件转变为*.class文件的过程:可能是指虚拟机的后端运行期编译器(JIT编译器,Just In T ...

  6. IIS 高并发导致log记录不完全

    项目测试性能过程中,对于高并发测试过程中发现log记录缺失一部分,经过调查,找到了原因是因为IIS连接数的限制,经过修改连接数,成功完成.设置如下: “点击网站”->“右击切换到功能视图”-&g ...

  7. spring与mybati整合方法

    (1)spring配置文件: <!-- 引入jdbc配置文件 --> <context:property-placeholder location="jdbc.proper ...

  8. 使用CSS3制作酷炫防苹果复选框 自行测试!

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. javaScript-基础篇(一)

    1.如何插入JS 使用<script>标签在HTML网页中插入JavaScript代码.注意, <script>标签要成对出现,并把JavaScript代码写在<scri ...

  10. CURL抓取网页内容

    <?php $curl = curl_init();//初始化一个cURL对象 $url = "http://cart.jd.com/cart/cart.html?backurl=ht ...