2010-01-06 33 views
3

所以也許文檔已過時,或者我剛剛在這裏。但我已經完成了一堆FB iframe應用程序(連接),但是我開始了我的第一個FB Connect站點。從本地主機運行它,並且連接URL是http:// my_external_IP_address。當我點擊我的網站上的FB登錄按鈕時,它會彈出,等待Facebook,然後它返回我的網站,URL爲http:// mysite/?session={session key, user_id, etc.}。user_id實際上是我的FB ID。所以它認爲我已登錄。如果關閉彈出窗口,我沒有登錄。我不確定彈出窗口爲什麼沒有執行正常的fb連接對話框。我正在執行這些步驟。Facebook從本地連接,做一些奇怪的東西

(我加空格的http://爲不爲 '垃圾郵件' 被檢測)

  1. html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml"
  2. <body> <script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php" type="text/javascript">
  3. 在結束之後,人體接近標記之前: script type="text/javascript"> FB.init("fbkey", "http://127.0.0.1/xd_receiver.htm"); 我已經嘗試使用xd_receiver.htm,/xd_receiver.htm(和其他組合),並提出了一個空白頁。使用http://127.0.0.1至少可以做點什麼。

在我的配置文件,這是所有那些之前被調用,它會檢查一個PHP會話密鑰 ,看看他們是否已經登錄,如果它不存在,尋找一個cookie,如果該不存在它這樣做:

require_once('includes/facebook.php'); 
    $facebook = new Facebook($fbkey, $fbsec); 
    $user_id = $facebook->get_loggedin_user(); 

    if($user_id > 0){ 
    $user = $ac->getUserFromFB($user_id); 
    $_SESSION['user_id'] = $user['user_id']; 
    } 

當我將它回顯到屏幕以測試時,user_id始終爲空。會話事件也不會發生。所以我不知道它在彈出窗口中做了什麼,但我認爲Facebook認爲它正在登錄。不確定。漂亮的難住這一個。任何幫助,將不勝感激。謝謝!

回答

0

我不確定,但我懷疑問題是由於您在本地計算機上運行。

我的猜測是,Facebook服務器將無法在127.0.0.1上找到您的計算機,因爲這是本地IP地址。您可以嘗試使用whatisyourip.com這樣的地方來獲取實際的遠程IP並使用它,但即使如此,您仍需要確保爲FB服務器設置必要的端口轉發以便能夠訪問本地計算機。

總而言之,對於這種類型的網站,我認爲在外部服務器而不是本地環境上開發會更容易。

順便說一句,我就不必輸入FB.init()的第二個參數 - 我只是用

FB.init(fbkey); 

如果您還沒有準備好,你可以嘗試服用了這一點完全,看看它有助於。

而且我認爲script標籤包含了Facebook FeatureLoader.js應該是你< /頭前>標籤不<體>標籤後

+0

我試圖從FB.init()中刪除xd_receiver文本,將127.0.0.1更改爲我的外部IP(雖然,這只是FB.init JS函數的一個參考,所以我認爲本地很好),並且我將featureloader移到了head標籤中。並嘗試了三個組合沒有成功。仍彈出我的網站。感謝您的幫助。 – Brett 2010-01-07 01:46:43

1

我個人發現對付Facebook的最簡單的方法connect是使用winscp將我的本地主機與某個域的服務器同步。由於fb連接連接到應用程序,因此該應用程序需要綁定到域,這是api密鑰生成的地方。毫無疑問,你的本地主機不在工作。

0

嘗試編輯您的hosts file以指向主機名(無論它是什麼,只要您將其設置爲與您的應用相關聯的主機名爲the settings)爲127.0.0.1,然後重新啓動瀏覽器並訪問您的本地應用程序通過您在主機文件中設置的域。這應該允許您測試大多數FB相關功能。主要的例外是Like按鈕,因爲它取決於Facebook的服務器也能夠訪問相關域中的應用程序。

實例主機行:

127.0.0.1 www.example.com 

如果添加了你上面你的/ etc/hosts文件,並重新啓動瀏覽器,你可以取代你與WWW測試URL的「127.0.0.1」組件.example.com,它就好像與您的應用程序相關的域名確實是www.example.com