小程序 获取微信 openid

小程序请求

 

wx.login({
      //获取code
      success: function (res) {
        var code = res.code; //返回code
        var url="api/User/GetOpenID?code="+code;//请求地址
        wx.request({
          url: url, 
          method:'Get',
          header: {
             'content-type': 'application/json'
          },success:function(data){ 
            console.log(data);
             
          }
        }) 
      }
    })

 

后台GetOpenID接口,构造函数

     private readonly IConfiguration _configuration;
        public UserController(WxAppDemoContext db, IConfiguration configuration)
        {
            _db = db;
            _configuration = configuration;
        }

appsettings.json 配置 appKey 和 appSecret

 

请求接口

[HttpGet]
        public ResultModel GetOpenID(string code)
        {
            
            var appKey = _configuration.GetSection("WxConfig:appKey").Value;
            var appSecret = _configuration.GetSection("WxConfig:appSecret").Value;
            var url = string.Format("https://api.weixin.qq.com/sns/jscode2session?appid={0}&secret={1}&grant_type=authorization_code&js_code={2}", appKey, appSecret, code);
            //请求----------------------------------------------------------
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.ProtocolVersion = HttpVersion.Version11;
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
            request.Method = "GET";
            request.ContentType = "application/json";
            request.Timeout = 90000;
            request.Headers.Set("Pragma", "no-cache");
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream streamReceive = response.GetResponseStream();
            StreamReader streamReader = new StreamReader(streamReceive, Encoding.UTF8);
            string strResult = streamReader.ReadToEnd();
            //JObject data = JObject.Parse(strResult);
            //解析---------------------------------  
            var obj = JsonConvert.DeserializeObject(strResult);

            dynamic id = ((dynamic)obj).openid;
            dynamic key = ((dynamic)obj).session_key;
            string openid = id;
            string ssessionkey = key;
            return new ResultModel()
            {
                Success = true,
                Message = "",
                Data = new { openid = openid, session_key = ssessionkey }
            };
        }
 

 

posted @ 2020-09-07 16:25  无事人  阅读(257)  评论(0)    收藏  举报