首页 > 编程知识 正文

Facebook Messenger接入java接入方式,属于internet接入方式的有

时间:2023-05-04 08:59:05 阅读:283268 作者:2320

事前准备,您需要有一个Facebook app,也要有一个粉丝页,你还要是粉丝页的管理员

1、进入到您的应用添加Messenger 平台

2、进入到设置,需要添加您要的粉丝页主页,然后再添加Webhooks

3、Webhooks验证的开发,进入到开发文档,这里官方是使用js的,我们这里使用java进行开发验证,从文档上看,我们需要做两件事,写一个/webhook的验证接口,其中是区分get和post,get是用来验证的,post是用来接收信息的,这里的返回内容都是有要求的,按文档的做就行了,验证的参数有三个hub.mode,hub.verify_token,hub.challenge,hub.verify_token参数就是我们自己定义的一个验证token,再设置Webhook的时候需要填写的。而接收的post方法,Facebook是以json的数据过来的,字段是看你发什么信息,基础的是page字段,entry字段,entry就是消息的主体。

 

4、回到应用的Messenger设置,Webhook设置验证后需要增加权限,messages、messaging_postbacks等基础的权限,根据您的需要进行添加即可。重点来了,到这里全部设置好之后我们就可以再粉丝页发个消息进行测试了,划重点,考试送分的,测试的fb账号需要是管理员,进入到您的粉丝页主页发条信息

5、在我们接收消息的方法里面可以收到fb发过来的信息

{"object":"page","entry":[{"id":"1105231312976257","time":1587629080411,"messaging":[{"sender":{"id":"2764402560274235"},"recipient":{"id":"1105231312976257"},"timestamp":1587629079993,"message":{"mid":"m_SUQ5zeaI3BGC3oSwxs7at6FWwx-_n2TKGDjWsi318asN8PKos_gt5WqrLnQAby7hh4Pj0QyRUwnf5_4i5bxiQg","text":"hello"}}]}]}

6、接口的简单编写

验证接口:

/** * fb Webhook验证 * @param mode * @param verifyToken * @param challenge * @return */@RequestMapping(value="/webhook",method=RequestMethod.GET)@ResponseBodypublic final ResponseEntity setupWebhookVerification(@RequestParam("hub.mode") String mode,@RequestParam("hub.verify_token") String verifyToken, @RequestParam("hub.challenge") String challenge,HttpServletRequest request) {logger.info("getHeadersInfo:"+JSON.toJSONString(GUtil.getHeadersInfo(request)));logger.info("getParamsInfo:"+JSON.toJSONString(GUtil.getParamsInfo(request)));logger.info("mode:"+mode+"n verifyToken:"+verifyToken+"n challenge:"+challenge);System.out.println("----getwebhook12-----");//需要看过来的日志if (mode.equalsIgnoreCase("subscribe") && VerificationFbToken.equals(verifyToken)) {return ResponseEntity.ok(challenge);} else {return new ResponseEntity(HttpStatus.FORBIDDEN);}}

接收消息接口

/** * 接收fb发送的信息 * @param fbReqBody * @param request * @param response * @return */@RequestMapping(value="/webhook",method=RequestMethod.POST)@ResponseBodypublic ResponseEntity setUpWebhookMessage(HttpServletRequest request) {logger.info("getHeadersInfo:"+JSON.toJSONString(GUtil.getHeadersInfo(request)));logger.info("getParamsInfo:"+JSON.toJSONString(GUtil.getParamsInfo(request)));BufferedReader br;try {br = new BufferedReader(new InputStreamReader((ServletInputStream) request.getInputStream(), "utf-8"));StringBuffer sb = new StringBuffer("");String temp;while ((temp = br.readLine()) != null) { sb.append(temp);}br.close();String params = sb.toString();logger.info("paramsjson:"+params);System.out.println("返回数据:"+params);JSONObject json= JSON.parseObject(params);if(!json.getString("object").equalsIgnoreCase("page")) {return new ResponseEntity(HttpStatus.NOT_FOUND);}else {return ResponseEntity.ok("EVENT_RECEIVED");}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();return new ResponseEntity(HttpStatus.NOT_FOUND);} }

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。