以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 一、Foxtable、微信公众平台与Asp.net开发实践之一:公众平台、网站的配置,如何开始 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=77194) |
-- 作者:Hyphen -- 发布时间:2015/11/12 15:58:00 -- 一、Foxtable、微信公众平台与Asp.net开发实践之一:公众平台、网站的配置,如何开始 本帖为学习实践帖,一切代码和资源均共享,无需回复盖楼。
本人接触狐表不久,能力也有限,如有任何错漏和好的建议可以在汇总帖回帖说明 ,不胜感谢。
如果有什么开发上的疑问,请另开一帖提问,本帖不回。
----------------------------------------以下为正文-----------------------------------------------
上图是Foxtable、微信公众平台与Asp.net网页的对接流程, 可以看的出来,微信用户(就是手机端)是通过微信接口服务和开发者联系起来的。
Foxtable2006里已经有一个Asp.net网页和Foxtable通讯的例子了,这里我们就先把微信公众平台与Asp.net网页对接起来,这样一来,三者就可以互联互通了:
(1)微信端配置
1. 首先,得注册一个微信公众号。怎么注册?网上一搜一大筐,这里就不说了。
2. 登录自己的公众号,在左边功能区点击“开发者中心”,按提示激活开发者功能
3. 进入开发者中心,可以看到以下信息:包括开发者ID、服务器配置、接口文档、接口权限等等。
4. 点击修改配置,打开配置页面,如下
URL:填写Asp.net网页对外发布的地址,可以是页面、处理程序或者MVC都可以 Token:如果不需要在网页端做签名验证,不用理会随便填几个符合规则的字符就行;如果需要做签名验证,填写的字符和网页中定义的一样就行。这个在网页设计时会讲到 EncodingAESKey:采用随机生成一个即可 消息加密方式:根据需要选择。一般开发阶段采用明文或者兼容模式即可。
当然在网页还没有开发的情况下,填写完成上面的配置后是提交不了的,因为微信会通过填写的URL去验证服务是否正常,不然提交了也没有意义。既然这样,那就放一放,我们先来做一个网页。
|
-- 作者:Hyphen -- 发布时间:2015/11/12 15:58:00 -- (2)Asp.net网页开发
1. 打开vs,创建一个Asp.net web应用程序,名称、路径以及Framework的版本根据自己的情况设置和选择。
2. 默认会生成一个Default.aspx的页面,右键选择查看代码,看到代码如下 Public Class _Default Inherits System.Web.UI.Page Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load End Sub End Class 在Page_Load过程添加代码: Public Class _Default Inherits System.Web.UI.Page Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim echostr As String = Request("echostr") If Request.HttpMethod = "GET" Then Response.Write(echostr) \'返回随机字符串则表示验证通过 End If End Sub End Class 在上面微信服务器端配置的时候,如果点击提交,微信就会调用URL中配置的地址,传入一些签名验证的数据。 echostr是其中一个。我们在页面中获取到echostr数据之后原样返回给微信,微信收到这串数据,就表示开发者的服务器验证通过了。如果没有返回这串数据而是返回其它内容,微信就会认为验证错误,而返回Token验证错误的提示。 3. 保存生成网站,然后发布出去。 (3)网站发布 1. 安装并确保服务器IIS可以使用,具体方法百度一下 https://www.baidu.com/s?tn=87048150_pg&word=IIS 2. 打开IIS,添加一个站点,比如MicroMsgWebApp 3. 在上面创建的Aspnet项目中右键菜单选择发布
4. 进入发布web页面 发布方法根据自己情况进行选择,如果开发电脑和服务器在一个局域网内,可以采用文件系统方式,跨网段的话可以采用ftp或者web部署的方式。 这里使用文件系统方式,目标位置选择IIS中配置好的网站,点击发布就完成了
5. 外网的访问设置 a、服务器网络对外需要有固定的IP,如果没有可以上网搜索下如何设置动态域名如花生壳等,这里不做描述 b、如果是固定IP,在路由中做端口映射配置,端口必须使用80,因为现在微信接口服务只认80端口。web服务可以不用设置DMZ主机。 (4)继续微信端的配置 1. 在服务器配置中填好URL,比如 http://120.198.222.222/MicroMsgWebApp/Default.aspx 2. 点击提交,如果URL可以正常连接的话,就可以看到修改成功的提示了,否则就会提示Token验证失败。 (5)关于接口安全验证 1. 实际上微信接口在调用服务器URL(即我们开发的网页)时,传递了4个和签名有关的参数,分别是 signature :微信加密签名 timestamp :当前时间戳 nonce :随机数 echostr :随机字符串 开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,则原样返回echostr参数内容,微信才认为是正确的服务调用者,则接入生效,否则接入失败。 2. 加密/校验流程: a. 将token、timestamp、nonce三个参数进行字典序排序 b. 将三个参数字符串拼接成一个字符串进行sha1加密 c. 加密后的字符串可与signature对比,如果一致则说明请求验证通过 函数如下: Public Shared Function Verify(ByVal token As String, ByVal timeStamp As String, ByVal nonce As String, ByVal signature As String) As Boolean Dim arrTmp() As String = {token, timeStamp, nonce} Array.Sort(arrTmp) Dim tmpStr As String = String.Join("", arrTmp) tmpStr = Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1") tmpStr = tmpStr.ToLower() Return tmpStr = signature End Function 在Page_Load过程中增加验证代码: If Request.HttpMethod = "GET" Then If Verify(Token, timestamp, nonce, signature) Then Response.Write(echostr) \'返回随机字符串则表示验证通过 End If End If
[此贴子已经被作者于2015/11/25 10:14:17编辑过]
|
-- 作者:Hyphen -- 发布时间:2015/11/12 15:58:00 -- 网页例子 例子看汇总贴 [此贴子已经被作者于2015/11/25 10:13:15编辑过]
|
-- 作者:Hyphen -- 发布时间:2015/11/12 15:58:00 --
[此贴子已经被作者于2015/11/12 16:06:58编辑过]
|
-- 作者:Hyphen -- 发布时间:2015/11/12 16:00:00 --
[此贴子已经被作者于2015/11/12 16:06:47编辑过]
|
-- 作者:新福星 -- 发布时间:2015/11/12 16:16:00 -- 好贴 |
-- 作者:lsy -- 发布时间:2015/11/12 16:39:00 -- 抢一块自留地。 |
-- 作者:bailang121 -- 发布时间:2015/11/12 16:42:00 -- 好贴!~lz辛苦 |
-- 作者:rjh4078 -- 发布时间:2015/11/12 16:50:00 -- 好贴 希望有后续应用案例 |
-- 作者:hanxuntx -- 发布时间:2015/11/12 16:55:00 -- 顶帖支持 |