|
作者:奋斗放个,原文地址 一:客户端 var that = this wx.login({ success: function (res) { var appId = ' ';//微信公众号平台申请的appid var appSecret = ' ';//微信公众号平台申请的app secret var js_code = res.code;//调用登录接口获得的用户的登录凭证code wx.request({ url: ' + appId + '&secret=' + appSecret + '&js_code=' + js_code + '&grant_type=authorization_code', data: {}, method: 'GET', success: function (res) { var openid = res.data.openid //返回的用户唯一标识符openid console.log(openid) console.log("试试吧上面就是获得的openid") } }) } }) //试验自己的服务器获取openId //调用登录接口 wx.login({ success: function (res) { //console.log(res); that.globalData.loginCode = res.code wx.getUserInfo({ success: function (res) { that.globalData.userInfo = res.userInfo that.globalData.iv = res.iv that.globalData.encryptedData = res.encryptedData typeof cb == "function" && cb(that.globalData.userInfo) that.req( 'https://lifar网址.aspx?Action=ActionLogin', { encryptedData: that.globalData.encryptedData, iv: that.globalData.iv, code: that.globalData.loginCode }, 'GET', function (res) { console.log(res) if (res.data.success) { console.log('试验自己的服务器获取openId:') console.log(res.data) var sessionId = res.data.result; wx.setStorageSync('sessionId', sessionId) console.log(sessionId) } }, function (res) { console.log(res) } ); } }) } }) //试验自己的服务器获取openId结束
方法: req: function (url, data, method, success, fail) { var mydata = data || {}; //mydata['appId'] = app.globalData.appId; wx.request({ url: url, data: mydata, method: method, success: success, fail: fail, complete: function () { // complete } }) }
二:服务端 string JsCode2SessionUrl = ""; protected void Page_Load(object sender, EventArgs e) { JsCode2SessionUrl = "{0}&secret={1}&js_code={2}&grant_type=authorization_code"; if (Request["Action"] == "ActionLogin") { string str_encryptedData = Request["encryptedData"]; string iv = Request["iv"]; //小程序appid和appsecret配置 string appid = Request["appid"]; string secret = Request["secret"]; //如果不传过来可以在web.config里配置 appid = ConfigurationManager.AppSettings["wx_appid"]; secret = ConfigurationManager.AppSettings["wx_key"]; string code = Request["code"]; string sessionId = JsCode2Session(appid, secret, code); //Session["sessionId"] = sessionId; if (sessionId == "") { Response.Write("{\"result\":\"session_key和openid取不到\",\"success\":false}"); Response.End(); } string session_key = sessionId.Split(new Char[] { '#' })[0]; string openid = sessionId.Split(new Char[] { '#' })[1]; //Response.Write(sessionId); Response.Write("{\"result\":\"" + openid + "\",\"success\":true}"); Response.End(); } } //code换取session_key,openid //<summary> //code换取session_key,openid //</summary> //<param name="appid"></param> //<param name="secret"></param> //<param name="code"></param> //<returns></returns> public string JsCode2Session(string appid, string secret, string code) { var url = string.Format(JsCode2SessionUrl, appid, secret, code); var str = GetFunction(url); try { JsonData jo = JsonMapper.ToObject(str); string session_key = jo["session_key"].ToString(); string weixinID = jo["openid"].ToString(); return session_key + "#" + weixinID; } catch (Exception ex) { return ""; } } public string GetFunction(string url) { string serviceAddress = url; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(serviceAddress); request.Method = "GET"; request.ContentType = "textml;charset=UTF-8"; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream myResponseStream = response.GetResponseStream(); StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8); string retString = myStreamReader.ReadToEnd(); myStreamReader.Close(); myResponseStream.Close(); //Response.Write(retString); return retString; }
|