微信官方开发文档:
https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842
//第一步:用户同意授权,获取code
string code = "", state = "";
string userAgent = Request.UserAgent;
if (userAgent.ToLower().Contains("micromessenger"))
{
code = SjuneRequest.GetQueryString("code");
state = SjuneRequest.GetQueryString("state");
if (code == "")
{
Response.Redirect("https://open.weixin.qq.com/connect/oauth2/authorize?appid=这里填appid&redirect_uri=http://www.cambro.cn/home/index.aspx&response_type=code&scope=snsapi_base&state=STATE&connect_redirect=1#wechat_redirect", false);
}
// 第二步:通过code换取网页授权access_token
else if (code != "")
{
string url = string.Format("https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code", "这里填appid", "这里填上一步获取到的code", code);
string response = HttpGet(url);
TokenRequest result = JsonConvert.DeserializeObject<TokenRequest>(response);
//到这里,有了openid就可以做很多事情了,比如说我现在是做授权登陆,那么,到这一步就可以了,
openid去数据库里面查,如果存在这条记录,那么直接将用户信息存session,即免登录。如果不存在该记录,
那么将此openid存session,待用户帐号密码登录时,再将此openid存入该用户的数据库中,
至此,微信授权免登录就算完成了
if (result.openid != "" && result.openid != null)
{
if (new BLL.Member_Info().ExistWXOpenid(result.openid))
{
Model.Member_Info model = new BLL.Member_Info().GetModelByOpenId(result.openid);
new BLL.Member_Log().Add(new Model.Member_Log()
{
MemberId = model.Id,
LogVaule = "【登录】前台登录成功",
AddTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
AddIp = Utils.IP()
});
Session["qt_UserInfo"] = model;
Session.Timeout = 60;
//写入登录日志
}
else
{//不存在id,存session,预备在登陆时插入
Session["UserOpenId"] = result.openid;
}
}
}
else
{
esponse.Redirect("https://www.baidu.com");
}
}
如有问题,请加我QQ:631931078或352167311