Java Facebook';s webhook应用程序创建失败,原因是;无法验证提供的URL";
无法在Facebook上创建Webhook应用程序,因为出现错误“无法验证提供的URL”Java Facebook';s webhook应用程序创建失败,原因是;无法验证提供的URL";,java,facebook,facebook-graph-api,Java,Facebook,Facebook Graph Api,无法在Facebook上创建Webhook应用程序,因为出现错误“无法验证提供的URL” 从带有https端口443的浏览器中,为回调提供的url工作正常 从webhook接收post调用的Servlet代码如下 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("**************Entering Callback Servlet**************************");
Map<String, String[]> parametersMap = request.getParameterMap();
if (parametersMap.size() > 0) {
if (request.getParameter("hub.mode").equals("streamInit")) {
System.out.println("Verify Token: " + request.getParameter("hub.verify_token"));
System.out.println("Challenge number:" + request.getParameter("hub.challenge"));
String responseToClient = request.getParameter("hub.challenge");
response.setStatus(HttpServletResponse.SC_OK);
response.getWriter().write(responseToClient);
response.getWriter().flush();
response.getWriter().close();
response.getWriter().append("Fetch-Mode").append(request.getParameter("hub.mode"));
response.getWriter().append("App Verify Token:").append(request.getParameter("hub.verify_token"));
response.getWriter().append("App Challenge No").append(request.getParameter("hub.challenge"));
System.out.println("**************Callback Successful**************************");
}
//response.getWriter().append("Served at: ").append(request.getContextPath());
}else{
System.out.println("**************Not an Facebook POST**************************");
}
System.out.println("**************Exiting Callback Servlet**************************");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
受保护的void doGet(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException{
System.out.println(“*******************进入回调Servlet**********************************”);
映射参数Map=request.getParameterMap();
如果(参数map.size()>0){
if(request.getParameter(“hub.mode”).equals(“streamInit”)){
System.out.println(“验证令牌:+request.getParameter(“hub.Verify_令牌”));
System.out.println(“质询编号:+request.getParameter(“hub.Challenge”));
String responseToClient=request.getParameter(“hub.challenge”);
response.setStatus(HttpServletResponse.SC_OK);
response.getWriter().write(responseToClient);
response.getWriter().flush();
response.getWriter().close();
response.getWriter().append(“获取模式”).append(request.getParameter(“hub.Mode”));
response.getWriter();
response.getWriter().append(“应用程序质询编号”).append(request.getParameter(“hub.Challenge”));
System.out.println(“****************回调成功*******************************”);
}
//response.getWriter().append(“服务于:”).append(request.getContextPath());
}否则{
System.out.println(“****************不是Facebook帖子****************************”);
}
System.out.println(“*************正在退出回调Servlet*******************************”;
}
受保护的void doPost(HttpServletRequest请求、HttpServletResponse响应)引发ServletException、IOException{
doGet(请求、响应);
}
需要关于我这里缺少的内容的帮助。Facebook希望被指向确切的文件(例如:callback.php),您可以使用mod rewrite解决这个问题。值得一提的是,https://证书必须是有效的,并由公共机构(例如:comodo)签名。您可以使用它将https Webhook发送到本地主机开发服务器
if(request.getParameter(“hub.mode”).equals(“streamInit”))
到
if(request.getParameter(“hub.mode”).equals(“subscribe”)
我不需要把它指向一个精确的文件。你在这里并没有真正使用IP
0.0.0
,是吗?您不能为此使用本地IP地址,它必须是可公开访问的URL。(我也不确定IP地址是否有效——在大多数情况下,Facebook想要有主机名的URL。)不,我不知道。使用0.0.0.0。我有一个公共URL和它的可访问性。但我没有像markus说的那样拥有一个签名SSL证书。我现在走到了死胡同:)是的,没错,现在你需要提供一个HTTPS URL。获取有效SSL证书的一种廉价而简单的方法是,但它需要您的服务器配合(允许您使用其处理域验证的客户端)。如果不这样做,还可以为个人提供免费证书。确定。我没有签名的SSL证书。除了webhook之外,我还有什么办法可以获得实时订阅源吗?@KarthickRadhakrishnan没有。但是你可以用大约8美元一杰尔的价格获得签名的sll证书。我发现最便宜的是在