2013-02-19 40 views
0

我想創建一個使用Facebook對用戶進行身份驗證的Android應用程序,稍後將訪問令牌傳遞給我們的Web應用程序服務器。Android Facebook登錄 - 太多選項

該應用只有在用戶通過身份驗證後才能使用。所以,當它啓動時我需要打開Facebook會話,然後使用訪問令牌並聯系我們自己的服務器以獲取更多信息。相同的Facebook會話將用於各種應用程序活動。

我無法決定如何處理Facebook會話。我是否在第一個Activity中放置了一個登錄按鈕described here?當會話狀態發生變化時,我在其他活動中做什麼?我不想爲每個活動添加Facebook登錄...

或者,我可以使用我自己的按鈕,如SDK的登錄示例中所示。但是當我在另一項活動中關閉會話時,我會遇到同樣的管理問題。

或者我可以把所有東西放在同一個活動中並使用不同的片段。

什麼是最佳實踐方式?

注意:有關此問題的大多數SO問題都與舊SDK相關(使用現已棄用的Facebook類)。

回答

1

最簡單的方法是絕對使用單一的活動來處理所有的會話狀態的變化,並用它來驅動用戶界面的變化。無論如何,Android正在推動Fragment模型,所以我認爲這是你最好的選擇。

或者,如果您需要使用不同的活動,則始終可以使用具有對當前活動的引用的常見Session.StatusCallback實現。然後,如果狀態更改驅動UI更改,則可以創建一個啓動新活動的意圖。

+0

我想我可以只有一個活動和洗牌碎片,而不是切換活動。這真的是Android應用程序的方向嗎? – zmbq 2013-02-19 23:20:26

0

你可以得到你的Facebook會話這樣

Session session = Session.getActiveSession(); 
    if (session == null) { 
     if (savedInstanceState != null) { 
      session = Session.restoreSession(getActivity(), null, statusCallback, savedInstanceState); 
     } 
     if (session == null) { 
      session = new Session(getActivity()); 
     } 
     Session.setActiveSession(session); 
     if (session.getState().equals(SessionState.CREATED_TOKEN_LOADED)) { 
      session.openForRead(new Session.OpenRequest(this).setCallback(statusCallback)); 
     } 
    }