利用公衆號JSSDK獲取微信用戶資料,如頭像、暱稱等

首先公衆號(服務號)必須認證過,每年繳納300元認證費。

然後在公衆裏面創建APPID和Secret,授權域名等操作,具體可以查看微信官方開發文檔。

private string openId = "";
    private string accessToken = "";

    /// <summary>
    /// 獲取微信用戶資料,返回json
    /// </summary>
    /// <returns></returns>
    private string GetWxInfo()
    {
        string appId = "您的APPID";
        string secret = "您的Secret";
        
        //調用【網頁授權獲取用戶信息】接口獲取用戶的openid和access_token
        GetOpenID(appId, secret);
        
        string url = "https://api.weixin.qq.com/sns/userinfo?access_token=" + accessToken + "&openid=" + openId + "&lang=zh_CN";

        string result = HttpService.Get(url);
        
        return result;
    }

    /// <summary>
    /// 獲取OPENID和access_token
    /// </summary>
    /// <param name="appId"></param>
    /// <param name="secret"></param>
    private void GetOpenID(string appId, string secret)
    {
        if (!string.IsNullOrEmpty(this.Request.QueryString["code"]))
        {
            //獲取code碼,以獲取openid和access_token
            string code = this.Request.QueryString["code"];

            string url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + appId + "&secret=" + secret + "&code=" + code + "&grant_type=authorization_code";

            string result = HttpService.Get(url);
            
            JsonData jd = JsonMapper.ToObject(result);
            openId = (string)jd["openid"];
            accessToken = (string)jd["access_token"];
        }
        else
        {
            string host = this.Request.Url.Host;
            string path = this.Request.Path;
            string redirect_uri = HttpUtility.UrlEncode("https://" + host + path);  //業務域名+路徑,跟公衆號後臺設置必須一致

            string url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + appId + "&redirect_uri=" + redirect_uri + "&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";

            try
            {
                //觸發微信返回code碼         
                this.Response.Redirect(url);//Redirect函數會拋出ThreadAbortException異常,不用處理這個異常
            }
            catch
            {

            }
        }
    }

正常情況下,微信會返回下述JSON數據包給公衆號:

{
    "subscribe": 1, 
    "openid": "o6_bmjrPTlm6_2sgVt7hMZOPfL2M", 
    "nickname": "Band", 
    "sex": 1, 
    "language": "zh_CN", 
    "city": "廣州", 
    "province": "廣東", 
    "country": "中國", 
    "headimgurl":"http://thirdwx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0",
    "subscribe_time": 1382694957,
    "unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL"
    "remark": "",
    "groupid": 0,
    "tagid_list":[128,2],
    "subscribe_scene": "ADD_SCENE_QR_CODE",
    "qr_scene": 98765,
    "qr_scene_str": ""
}

微信官方文檔:https://developers.weixin.qq.com/doc/offiaccount/User_Management/Get_users_basic_information_UnionID.html#UinonId

小記:這裏用的接口是網頁授權token,另外一種是基礎token,接口地址不同,開發的時候要注意別選錯了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章