Asp.net 微信企業號網頁開發流程
阿新 • • 發佈:2018-03-13
部門 trre npr oauth info help AI authorize load
一、在pageload方法中獲取code
var code = GetCode(); private string GetCode() { return HttpContext.Current.Request["code"]; }View Code
二、如果code為空,需要重定向到微信獲取code
//當前頁面對應的外網地址 string redirect_url = "http://6018.ynedut.cn/PpWordOrder/default.aspx"; redirect_urlView Code= 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(1000, 200000).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 微信企業號網頁開發流程