Facebook的网络挂接应用程序的创建由于未能“无法核实所提供的网址”

问题描述:

无法在Facebook上创建由于错误“无法验证提供的URL”Facebook的网络挂接应用程序的创建由于未能“无法核实所提供的网址”

enter image description here

  1. 的URL,鉴于网络挂接广告应用程式回调正在从浏览器的罚款HTTPS端口443
  2. servlet代码到收到来自网络挂接后调用如下

    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); 
         } 
    

需要帮助,我在这里失踪。

+0

虽然你不是真的在使用IP'0.0.0.0',对吗?您不能为此使用本地IP地址,它必须是可公开访问的URL。 (而且我不确定IP地址是否可以工作 - 在大多数情况下,Facebook需要具有主机名的URL。) – CBroe

+0

不,我不是。使用0.0.0.0。我有一个公共URL并且它可以访问。但是我没有签名的SSL证书,正如markus所说的那样。我现在处于死胡同:) –

+1

是的,的确如此,现在您需要提供一个HTTPS网址。获得有效的SSL证书的便宜而简单的方法是https://letsencrypt.org/,但它要求您的服务器一起玩(让您使用其客户端来处理域验证。)如果这不是一个选项, https://www.startssl.com/也为个人提供免费证书。 – CBroe

Facebook想要指出确切的文件(例如:callback.php),你可以用mod重写来解决这个问题。只需提及它,https://证书必须是有效的并且由公共机构签名(例如:comodo)。

+0

好的。我没有签名的SSL证书。有没有什么办法可以实时提供webhook以外的内容? –

+1

@KarthickRadhakrishnan no。但你可以得到一个约8美元的签名sll证书。我找到的最便宜的是[namecheap](https://www.namecheap.com/security/ssl-certificates/comodo/positivessl.aspx) –

+0

谢谢Markus。 –

您可以使用https://ngrok.com/将https Webhook发送到本地主机开发服务器。

if (request.getParameter("hub.mode").equals("streamInit"))

if (request.getParameter("hub.mode").equals("subscribe"))

我并不需要在确切文件指向它。