1. 程式人生 > >Asp.net 微信企業號網頁開發流程

Asp.net 微信企業號網頁開發流程

部門 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_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(1000, 200000).ToString(), PubConstant.AgentId); } #endregion
View Code

三、根據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 微信企業號網頁開發流程