2010-01-29 43 views
1

我有用於Facebook的canvas的FBML應用程序。我試圖在控制器中使用facebook java api獲取當前用戶標識,但不強制每個用戶通過facebook.com/login.php訪問應用程序。Java中的Facebook畫布頁 - 可選的應用程序授權?

問題是我不明白Facebook應用程序的工作流程。爲了獲得用戶ID,我需要提供fb sessionid。爲了獲得會話,我似乎必須將所有用戶轉發到http://www.facebook.com/login.php?api_key= ......這將提示他們獲得額外的權限。事情是我不想強迫每個人給我額外的權限或登錄。客人應該也能夠使用具有有限功能的應用程序。

我該如何區分客人和那些沒有給我權限的人,而沒有將所有人沒有會話權限頁面重定向到每個人?

謝謝。

回答

1

我對Java API的細節一無所知,但我可以告訴你兩種獲取用戶ID的方法。正如你所知道的,首先是要求用戶認證應用程序。如果您使用FBML並將requirelogin="1"放在某些HTML鏈接或表單元素上,並且會出現頁內的「授權此應用程序」彈出窗口,您不一定需要在任何地方重定向用戶執行此操作。一旦他們授權了應用程序,您將獲得每個請求中傳遞的fb_sig_user參數。其次,您可能會獲得通過另一個參數傳遞給您的訪問者的用戶標識,而他們沒有授權您的應用程序。這以fb_sig_canvas_user的形式出現,一旦用戶以某種方式與您的應用程序進行了交互,就會得到它。這可能來自於單擊FBML畫布頁面中的鏈接或單擊其他用戶發佈的供稿故事。 fb_sig_canvas_user允許您識別用戶,但不能代表他們進行任何API調用。您仍然可以提示他們發佈故事併發送邀請。

但是,這兩種方法都會有一些用戶到達您的應用程序,您無法知道他們是誰 - 甚至不知道他們的用戶ID。這是爲了保護用戶的隱私,並且沒有辦法繞過它 - 你必須讓他們點擊某些東西,或者讓他們獲得授權。

+0

謝謝。我最終在頁面上放入了'標籤,詢問訪客是否想通過訪問login.php鏈接進行授權。 – serg

+0

可能你可以發佈你的Servlet /過濾器配置的細節,它的工作原理?我有興趣看到auth握手過程的一個工作示例。 – emeraldjava

相關問題