2012-07-25 67 views
2

我在本地主機中創建了一個小應用程序。Facebook API在嘗試使用本地主機運行時發送錯誤響應

我已經在該wieshark檢查:

請求會是:

HTTP GET: http://www.facebook.com/dialog/oauth?api_key=APPID&app_id=APPID&channel_url=http%3A%2F%2Fstatic.ak.facebook.com%2Fconnect%2Fxd_arbiter.php%3Fversion%3D9%23cb%3Df17ca8709c%26origin%3Dhttp%253A%252F%252F127.0.0.1%253A8080%252Ffd1147b44%26domain%3D127.0.0.1%26relation%3Dparent.parent&client_id=121312018012923&display=none&domain=127.0.0.1&locale=en_US&origin=1&redirect_uri=http%3A%2F%2Fstatic.ak.facebook.com%2Fconnect%2Fxd_arbiter.php%3Fversion%3D9%23cb%3Df164e7a46c%26origin%3Dhttp%253A%252F%252F * 127.0.0.1%253A8080% * 252Ffd1147b44%26domain%3D127.0.0.1 %26relation%3Dparent%26frame%3Df216567208 & RESPONSE_TYPE =記號%2Csigned_request%2Ccode & SDK =喬伊

Facebook正在發送200 OK:

[截斷]鑑於網址不被應用程序配置:一個或多個指定的網址不被應用' s設定允許不允許。它必須將網站網址或帆布URL匹配,或域必須是一個的子域Ø

我沒有得到什麼的問題是: 我有我的本地主機上運行XAMPP。 在畫布和網站URL中我有:http://mytestdomain.com:8080

我的機器在/ etc/hosts我有127.0.0.1 mytestdomain.com。

實際的代碼在你的應用程序配置在Facebook的我正在

<body> 
     <div id="fb-root"></div> 
<script> 

     window.fbAsyncInit = function() { 
      FB.init({appId: 'APPID', status: true, cookie: true, xfbml: true}); 

     }; 
     (function() { 
     var e = document.createElement('script'); e.async = true; 
     e.src = document.location.protocol + 
      '//connect.facebook.net/en_US/all.js'; 
     document.getElementById('fb-root').appendChild(e); 
     }()); 

     FB.getLoginStatus(function(response) {   
     if (response.status == "connected") { 
     alert("yes I am in "); 
     } 
     else{ 
     alert(" you need to login to facebook:"); 
     } 
     }); 

    function checkFacebookLogin() { 
    alert("hai"); 
    } 

    </script> 


<p id="fb_login_button_1"><fb:login-button onlogin="checkFacebookLogin();" size="medium" scope="email">Sign in using Facebook</fb:login-button></p> 

</body> 

回答

0

做了你的應用程序URL指向本地主機?

+0

謝謝Zurek的迴應。是的,我有它指向本地主機。 – 2012-07-25 05:33:49

+0

我嘗試了2種組合:網站網址和畫布url = http:// localhost:8080 2)網站網址和畫布網址= http://mytestapp.com:8080。在我的主機文件中,我有mytestapp 127.0.01 – 2012-07-25 05:34:03

+0

太棒了,很高興它的工作,將問題標記爲回答,歡呼 – 2012-07-25 05:39:31

0

從我所知道的。 Facebook不允許在本地主機上測試您的應用程序。

+3

是的,只需將網址指向http:// localhost:3000/ – 2012-07-25 05:32:25

+0

謝謝莫斯曼從我在網上看到的和堆棧溢出問題I認爲這是支持Zurek – 2012-07-25 05:37:40

1

您在Visual Studio中調試到的地址需要完全匹配您的https://developers.facebook.com/「網站URL」。我會建議使用IIS進行調試,並手動創建一個虛擬目錄以匹配您的網站URL。 (另外你不必指定一個端口,如果它不是默認的80或443端口,我發現它會引起問題)

在我的這個問題中,我有一個「http:/ /www.domain.com/App「,但我的Facebook開發者網站URL是」http://domain.com/App「。我也看到有人離開斜線「/」,或者有「https」而不是「http」。

底線是,你需要確保你的網址匹配點。 Facebook似乎非常挑剔。

0

我想你可能會使用相同的應用程序和祕密密鑰爲多個網站。 您需要更改應用程序和密鑰對你的網站,你可以從 應用facebook developer

對於我這個工作,希望生成您的鑰匙,這將有助於你

0

嘗試建立本地服務器上的虛擬主機。你可以創建虛擬URL。如果您將Facebook應用程序中的URL設置爲虛擬URL,我相信您可以從本地服務器進行一些Facebook調用,但是如果我沒有記錯,您仍然無法發佈到圖表。

0

只是另一種可能性:在我的情況下,我有多個WP插件/腳本調用FB代碼,並在本地和生產上有不同的AppID - 在一個階段,我忽略了本地/生產配置之間的衝突。

-1

看看下面,並嘗試:

  1. 應用程序域:your-domain.com
  2. 網站與Facebook登錄:your-domain.com:8080
  3. 在C:\ WINDOWS \ SYSTEM32 \ DRIVERS \ ETC \主機,添加條目127.0.0.1 your-domain.com
  4. 在瀏覽器地址欄中輸入:http://your-domain.com:8080/appname

這它!

+1

建議** - 1 **這絕對沒有增加。 OP *已經*配置了他們的/ etc/hosts。 – michaelb958 2013-06-05 10:35:01

相關問題