2011-01-06 78 views

回答

4

首先,我不認爲它可以使用JavaScript來完成。以下是如何使用服務器端語言(如PHP)執行此操作的方法。

如果仔細查看您提供的頁面(可口可樂着陸標籤),即使用戶沒有使用Facebook登錄,您也可以看到該國的選擇正常。

當您設置一個Facebook應用程序時,您可以提供一個標籤網址。這是相對於你的canvas地址的地址,當你的應用程序被添加到一個頁面(在一個標籤中)的時候,Facebook將從這個地址服務於內容。

如果您執行$ _SERVER超全局變量的var_dump,您將看到一個名爲HTTP_X_FB_USER_REMOTE_ADDR的變量。這是相應用戶的IP地址。獲得用戶IP地址後,您可以輕鬆使用地理位置服務查找國家/地區:)。

祝你好運!

後來編輯

看來,我說的是變量不可用一個標籤內。我只是做了一些更多的測試,無論用戶是否登錄,或者您始終都擁有名爲fb_sig_country的POST變量,這是用戶所在國家/地區的TLD。

2

通過Facebook的應用程序API我相信他們能夠獲得用戶的IP地址,然後做一個地理IP查找。或者Facebook提供一個API調用,告訴他們哪個國家。


編輯:
http://developers.facebook.com/docs/guides/canvas

爲了創建一個個性化的用戶體驗 ,的Facebook發送有關 用戶的 應用程序的信息。此信息傳遞到 您的Canvas URL使用HTTP POST內的 單個signed_request參數 其中包含base64url編碼的 JSON對象。

當用戶第一次訪問應用程式, 的signed_request參數包含 用戶數據有限量的。在 默認情況下( 用戶的Facebook ID),爲了獲得訪問所有用戶 信息可用於您的 應用程序,用戶必須授權您的應用程序 。 Facebook 提供多種不同的方式來 處理授權範圍從 登錄按鈕到在您的Web服務器上手動執行 OAuth2.0流程。

>包含當前用戶的語言環境和 國家/地區的JSON數組。 區域和國家/地區始終可用 。

你得到的有關用戶,他們的語言環境和國家的信息量有限,只有等到他們授權的應用程序,你可以得到默認的信息。

+0

Facebook在他或她積極與頁面進行交互之前不會公開任何用戶信息,因此第一部分不支持。 – 2011-01-06 15:04:13

+0

關於API調用(FBML/FBJS?),如果有的話,我不知道它。 – 2011-01-06 15:04:36

1

你可以很簡單地通過PHP

$country = $_POST['fb_sig_country']找到這個

開發誰使用自定義選項卡可以充分利用我們的新* fb_sig_country *請求頭顯示基於用戶的語言環境不同的內容。例如,如果您的應用程序使用自定義選項卡來顯示最新的世界盃排名,則可以使用fb_sig_country顯示用戶所在國家/地區的突出顯示。 (注:如果您使用fb_sig_country,你還必須處理的情況下該字段爲空,因爲你可能沒有在世界上每一個國家的內容。)

通過http://developers.facebook.com/blog/post/394

0

Facebook的通電流用戶的國家和地區在簽名請求的用戶部分。在這裏閱讀:https://developers.facebook.com/docs/authentication/signed_request/

如果你有一個iframe應用程序(現在是必需的,所以你最有可能),也可以使用普通的geo-ip方法。 MaxMind提供了基於javascript的檢測以及用於服務器端的數據庫。如果您在應用程序某處包含一個返回到maxmind.com的鏈接,它是免費的。 http://www.maxmind.com/app/javascript_city