完整教程链接:ASP.Net: EshineASPNet-基于ASP.Net敏捷开发开源框架
这里的公众号开发用的是另外一个第三方框架Senparc.Weixin,有详细的教程,基本上就是配上自己的参数跟微信公众号后台匹配就能用。笔者拿服务号为例,可以实现自动授权,这里的方法是,点击公众号底部按钮做跳转的时候不是直接跳到目的地网页,而是先去到一个中转网页这里是OAuth2page.aspx,授权之后再去目的地网页,这样就可以检查是否从微信过来,如果从普通浏览器打开可以显示“请从微信端访问”这样的文字。
protected void Page_Load(object sender, EventArgs e)
{
string str = base.Request.QueryString["q"];
string url = "";
switch (str)
{
case "1"://功能1
url = OAuthApi.GetAuthorizeUrl(Weixin.Appid,
"http://weixin.eshinelee.com/webpage/page1.aspx", "something", OAuthScope.snsapi_base, "code");
break;
case "2"://功能2
url = OAuthApi.GetAuthorizeUrl(Weixin.Appid,
"http://weixin.eshinelee.com/webpage/page2.aspx", "cus", OAuthScope.snsapi_base, "code");
break;
}
base.Response.Redirect(url);
}
以上是OAuth2page的代码,授权之后直接跳转到目的网页。
public void CheckUser(System.Web.HttpRequest Request)
{
//判断用户是否登陆
if (Session["openid"] == null || Session["openid"].ToString()=="")
{
if (!string.IsNullOrEmpty(Request.QueryString["code"]))
{
string openid = publicclass.getopenidbyOAuth2(Request.QueryString["code"], Request.QueryString["state"]);
if (openid != "" && !openid.Contains("错误"))
{
Session["openid"] = openid;
}
}
else
{
Response.Redirect("~/webpage/lost.aspx", true);
}
}
}
这里就可以检查是否从微信端过来,还是从普通网页打开了。
这里用到了第三方框架,还用到了Bootstrap, Kindeditor,本框架也是框架。用框架的好处就是相当于站在了巨人的肩膀上,让自己的一小步可以实现一大步,好处自然是多多的。当然框架不断会更新,也会不断有更新的框架出来,活到老学到老。自己也可以发掘第三方框架的易用功能,比如笔者就使用了Kindeditor里面的文件上传功能来做图片上传,自己基本不用写代码了,而且都是JQuery体验也还不错。
第三方框架的弊处是开源的原因让攻击的可能性增加,黑客可以研究代码更容易找到软件的漏洞,比研究操作系统简单多了。
本教程代码参考
EshineASPNet\Senparc.Weixin.MP.Sample.WebForms\OAuth2page.aspx