2011-03-09 74 views
2

我正在嘗試使用Java Tomcat和RestFB編寫一個facebook應用程序。restfb:用java寫一個facebook應用程序(使用新圖api)

的restfb文檔顯示以下內容:

我回應認爲我可能會看錯指令,這是一個Facebook連接或除apps.facebook.com/app_name內的實際Facebook應用程序之外的任何其他內容。

我真的很感激任何有關這個問題的信息。我只是試圖創建一個簡單的Facebook應用程序,打印用戶的名稱。

一般來說後我獲取用戶的存取權限令牌,我可以做到以下幾點:

FacebookClient facebookClient = new DefaultFacebookClient(MY_ACCESS_TOKEN); 
User user = facebookClient.fetchObject("me", User.class); 
out.println("User name: " + user.getName()); 

我的問題是如何正確獲取用戶的訪問令牌?在我在帖子頂部顯示的信息中,它表明我需要提出2個請求。第一個是代碼,第二個是代碼。並且對訪問令牌的請求實際上向用戶顯示了我的應用程序密鑰,因爲每次我將他轉發到不同的頁面時,用戶都可以輕鬆查看get和set參數。

所以我想我很迷失在這裏。

請幫忙! :)評論

這些說明,我需要兩次將用戶重定向的頁面後

感謝

更新。首先獲取代碼,然後獲取訪問令牌。用戶可以看到這兩個重定向,因此他可以很容易地從get參數中看到facebook應用程序密鑰和密鑰。我如何確保這些步驟對用戶隱藏?

+1

我很抱歉,您正在尋找正確的文檔。這些是需要採取的_exact_步驟。事實上,你可以從你的瀏覽器運行這些步驟。 – Nishant 2011-03-09 16:06:24

+0

或者,如果要爲應用程序創建OAuth 2授權流(http://code.google.com/p/joauth/),請使用JOAuth。我正在使用它。 – 2011-03-09 16:17:54

+0

_「他可以很容易地從get參數中看到facebook應用程序密鑰和祕密密鑰」_ - 有什麼大不了的。您的應用與您的域名綁定。因此,除非您的域名處理請求 - 響應,否則請求將不會被驗證。 – Nishant 2011-03-09 17:47:37

回答

4

正如評論中所述,這些是您需要採取的步驟訪問Facebook的圖形API。然而,要回答你的第二個問題:「我如何確保這些步驟 是從用戶隱藏」

只有第一個請求應該由用戶的瀏覽器執行。其目的是爲了確保Facebook是唯一授權用戶的Facebook身份。根據您正在編寫的應用程序,您可以使用重定向URL指向您指定的默認重定向URL,也可以在您的網站上指定用於檢索令牌的自定義URL。第一種方法通常由可以控制瀏覽器如何處理重定向的移動設備等獨立應用程序使用。第二種方法將用於基於Web的自定義應用程序。一旦你收到訪問令牌,那麼你將在你的代碼中執行第二個操作(使用你最喜歡的http apis),而不是通過瀏覽器。將access_token url上的重定向與authentication-url上指定的重定向url進行比較。 Facebook僅將其用於驗證,並且在成功完成請求時不會執行實際的重定向。

這裏是高級步驟:

  1. 重定向用戶的瀏覽器認證的URL指定相應的REDIRECT_URI
  2. 從重定向瀏覽器請求
  3. 檢索驗證令牌使用您的首選執行的access_token檢索HTTP框架(無需用戶輸入)
  4. 解析結果並檢索訪問令牌
  5. 帶有令牌的初始restfb並根據需要使用
相關問題