第一部分——环境的搭建,开发接入与URL有效性验证
一、发环境的搭建
最近貌似Sunny-Ngrok无能正常使用,由于时间关系就转另外一个内网穿透,本次并没有使用ngrok转向使用frp
Frp比ngrok更加方便,由于本人使用的是Linux系统,本次开发环境的搭建就以Linux为主,Windows应该类似。
1、客户端下载
选择相对应的版本进行下载
本人使用的是Linux 64位版本
注意:386是32位的版本
客户端只用下载frpc和frpc.ini,其中后者是配置文件
2、客户端的配置(frpc.ini)
Linux客户端的配置
Linux下使用命令修改配置文件:
vim frpc.ini
配置文件内容如下:
1. [common] 2. server_addr = frp2.chuantou.org 3. server_port = 7000 4. privilege_token = www.xxorg.com 5. protocol = kcp 6. user = worldyao 7. 8. [xxorg] 9. type = http 10. local_ip = 127.0.0.1 11. local_port = 8080 12. subdomain = worldyao 13. 14. [tcp3389] 15. type = tcp 16. local_ip = 127.0.0.1 17. local_port = 3389 18. remote_port = 53389
其中修改的部分是:
user这里随便填写
user = worldyao
这里是端口号,此处我用的是Tomcat的默认端口号8080,该个配置文件的默认端口号是80
local_port = 8080
这个是前缀,设置这个之后你的访问地址将是:http://worldyao.frp2.chuantou.org
subdomain = worldyao
Windows客户端的配置
frpc.ini的参数设置同Linux一样仅仅是启动方式不一样
3、启动服务
Linux下使用命令:
sudo ./frpc -c ./frpc.ini
Windows下控制台
cmd命令
frpc.exe -c frpc.ini
PowerShell命令
.\frpc.exe -c frpc.ini
二、开发的接入和验证URL的有效性
粉丝服务平台开发模式接入流程
第一步:申请消息接口
第二步:验证URL有效性
第三步:获取AccessToken
第一步:申请消息接口
在微博开放平台中新建粉丝服务应用
创建应用完成后-->找到该应用-->完善应用(可以不用审核)
可以看到粉丝服务平台的
App Key和App Secret,记录这两个参数
第二步:验证URL有效性
在开发者首次使用事件推送服务时,需要先通过一次校验来和微博服务器建立首次连接,具体来说:
开发者提交信息后,微博消息服务器将发送GET请求到填写的URL上,GET请求携带四个参数:
校验参数字段 |
字段类型 |
字段说明 |
signature |
string |
微博加密签名,signature结合了开发者的appsecret、和请求中的timestamp参数,nonce参数 |
timestamp |
string |
时间戳 |
nonce |
string |
随机数 |
echostr |
string |
随机字符串 |
开发者收到请求后,首先通过加密后的signature参数来校验GET请求的真实性,如果确认此次GET请求来自微博服务器,原样返回echostr参数内容就可以成功建立首次连接,否则连接失败。
1、打开eclipse,新建一个名为WeiBo的Web项目,新建一个cn.json.weibo的package,在该包下新建一个名为WeiBo的java文件。具体代码如下:
①WeiBo.java
package cn.json.weibo; public class WeiBo extends HttpServlet{ private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { String signature = request.getParameter("signature"); // 微信加密签名 String timestamp = request.getParameter("timestamp"); // 时间戳 String nonce = request.getParameter("nonce"); // 随机数 String echostr = request.getParameter("echostr"); // 随机字符串 PrintWriter out = response.getWriter(); // 通过检验signature对请求进行校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败 if (Check.checkSignature(signature, timestamp, nonce)) { out.print(echostr); } out.close(); } /** * 处理微博服务器发来的消息 */ public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { } }
②、配置Servlet(修改web.xml)
在web.xml文件加入以下代码
<servlet> <servlet-name>WeiBo</servlet-name> <servlet-class>cn.json.weibo.WeiBo</servlet-class> </servlet> <servlet-mapping> <servlet-name>WeiBo</servlet-name> <url-pattern>/WeiBo</url-pattern> </servlet-mapping>
③、项目树图
④、部署运行,发布
④、服务器的配置
URL填写:服务器地址+项目名称+调用的Servlet
AppKey:从粉丝服务平台应用获取的AppKey