/// <summary>
        /// 获取公众号关联的UserInfo
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        public async Task <IResultModel <Dictionary <string, object> > > GetUserInfo(WechatMpAuthParam param)
        {
            ResultModel <Dictionary <string, object> > resultModel = new ResultModel <Dictionary <string, object> >();

            var url        = Oauth2Url + "?appid=" + param.AppId + "&secret=" + param.AppSecret + "&code=" + param.Code + "&grant_type=authorization_code";
            var httpClient = new HttpClient();
            var content    = await httpClient.GetStringAsync(url);

            Dictionary <string, object> contentDict = JsonConvert.DeserializeObject <Dictionary <string, object> >(content);

            if (contentDict.Keys.Contains("errmsg"))
            {
                return(resultModel.Failed(contentDict["errmsg"].ToString()));
            }

            var access_token = contentDict["access_token"].ToString();
            var openid       = contentDict["openid"].ToString();

            url     = Oauth2UserInfoUrl + "?access_token=" + access_token + "&openid=" + openid;
            content = await httpClient.GetStringAsync(url);

            //{"openid":"OPENID","nickname":"NICKNAME","sex":1,"province":"PROVINCE","city":"CITY","country":"COUNTRY",
            //"headimgurl": "http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0",
            //"privilege":["PRIVILEGE1","PRIVILEGE2"],"unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL"}
            contentDict = JsonConvert.DeserializeObject <Dictionary <string, object> >(content);

            if (contentDict.Keys.Contains("errmsg"))
            {
                return(resultModel.Failed(contentDict["errmsg"].ToString()));
            }

            return(resultModel.Success(contentDict));
        }
        /// <summary>
        /// 获取公众号关联的OpenId
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        public async Task <IResultModel <string> > GetOpenId(WechatMpAuthParam param)
        {
            ResultModel <string> resultModel = new ResultModel <string>();

            var url        = Oauth2Url + "?appid=" + param.AppId + "&secret=" + param.AppSecret + "&code=" + param.Code + "&grant_type=authorization_code";
            var httpClient = new HttpClient();
            var content    = await httpClient.GetStringAsync(url);

            Dictionary <string, object> contentDict = JsonConvert.DeserializeObject <Dictionary <string, object> >(content);

            //{"access_token":"ACCESS_TOKEN", "expires_in":7200, "refresh_token":"REFRESH_TOKEN","openid":"OPENID", "scope":"SCOPE","unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"}

            if (contentDict.Keys.Contains("errmsg"))
            {
                return(resultModel.Failed(contentDict["errmsg"].ToString()));
            }

            return(resultModel.Success(contentDict["openid"].ToString()));
        }