Java开发微博粉丝服务(1)——环境的搭建,开发接入与URL有效性验证
第一部分——环境的搭建,开发接入与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