微信小程式 獲取openid 存入資料庫 C#
阿新 • • 發佈:2019-01-01
string JsCode2SessionUrl = "";
protected void Page_Load(object sender, EventArgs e)
{
JsCode2SessionUrl = "https://api.weixin.qq.com/sns/jscode2session?appid={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 = "wx86星星點燈ca6";
secret = "ab2bcae0星星點燈1836177824";
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();
}
else
{
string session_key = sessionId.Split(new Char[] { '#' })[0];
string openid = sessionId.Split(new Char[] { '#' })[1];
//給資料看裡寫入使用者的openId
MySqlDataReader reader1 = MysqlHelper.ExecuteReader("select * from yg_users where openId='" + openid + "'");
try
{
if (reader1.Read())
{
Log.Error("" + openid, "東海房產使用者資訊表查詢到記錄———不進行插入操作———————");
}
else
{
Log.Error("", "東海房產資訊表查詢不到記錄———進行插入操作———————");
//無使用者進行插入操作
int result1 = MysqlHelper.ExecuteNonQuery("insert into yg_users(openId,createdAt) values('" + openid + "', '" + DateTime.Now.ToString() + "')");
//Response.Write(result1);
}
}
catch
{
Log.Error("", "查詢使用者資訊表———異常———————關閉reader");
reader1.Close();
//throw new HttpResponseException(HttpStatusCode.NotFound);
}
finally
{
Log.Error("" + openid, "查詢使用者資訊表結束——————————關閉reader");
reader1.Close();
}
Log.Error("" + openid, "東海房產使用者資訊表返回openId———————");
//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;
}
protected void Page_Load(object sender, EventArgs e)
{
JsCode2SessionUrl = "https://api.weixin.qq.com/sns/jscode2session?appid={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 = "wx86星星點燈ca6";
secret = "ab2bcae0星星點燈1836177824";
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();
}
else
{
string session_key = sessionId.Split(new Char[] { '#' })[0];
string openid = sessionId.Split(new Char[] { '#' })[1];
//給資料看裡寫入使用者的openId
MySqlDataReader reader1 = MysqlHelper.ExecuteReader("select * from yg_users where openId='" + openid + "'");
try
{
if (reader1.Read())
{
Log.Error("" + openid, "東海房產使用者資訊表查詢到記錄———不進行插入操作———————");
}
else
{
Log.Error("", "東海房產資訊表查詢不到記錄———進行插入操作———————");
//無使用者進行插入操作
int result1 = MysqlHelper.ExecuteNonQuery("insert into yg_users(openId,createdAt) values('" + openid + "', '" + DateTime.Now.ToString() + "')");
//Response.Write(result1);
}
}
catch
{
Log.Error("", "查詢使用者資訊表———異常———————關閉reader");
reader1.Close();
//throw new HttpResponseException(HttpStatusCode.NotFound);
}
finally
{
Log.Error("" + openid, "查詢使用者資訊表結束——————————關閉reader");
reader1.Close();
}
Log.Error("" + openid, "東海房產使用者資訊表返回openId———————");
//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;
}