2016-01-20 15 views
4

無法在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

回答

2

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。 –

1

您可以使用https://ngrok.com/將https Webhook發送到本地主機開發服務器。

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

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

我並不需要在確切文件指向它。

相關問題