[Android] Facebook SDK - Login

  • 0
[Android] Facebook SDK - Intellij Environment Setup | Andro Tips
Login | Facebook Developer
Login for Android | Facebook Developer
--
Session - Authorize
UiLifecycleHelper - Session management using Session.StatusCallback 
--
1. Setup UI
    - Setup res/drawable, res/values/strings
    - 授權登入邏輯主畫面 MainActivity.java (extends FragmentActivity) +  main.xml
    - 未登入畫面 SplashFragment.java + splash.xml
    - 已登入畫面 SelectionFragment.java + selection.xml 

2. Authentication logic
    - 用 session state 判斷是否已登入,給予不同畫面
        onSessionStateChange(), showFragment()
    - 用 UiLifecycleHelper 監聽 session 狀態、觸發 Session.StatusCallback listener
    - onCreate(), onResumeFragments(), onResume(), onPause(), onDestroy(), onActivityResult(), onSavedInstanceState()

3. Add the Logout Flow
    - 官網把已登入的個人資料,做在 option menu 裡的 settings, 所以才要用到 onPrepareOptionsMenu()  onOptionsItemSelected()
     - 在 main.xml 裡加入 UserSettingsFragment, 整個資料的提取都被包在 com.facebook.widget.UserSettingsFragment 裡面了,要另外下 request 直接抓資料的話,請參考最下面的連結
     - Login / Logout 的 functionality 都被包在 com.facebook.widget.LoginButton 裡面了,所以只需要在 layout 中加入 LoginButton 就可以了! (當然是在 uihelper 已經把相對應的 state change 都 override 過的情況下)
    - 第一次 Login 時會開啟 Facebook 登入對話框,如果手機上有 Facebook App 就會開啟(若已登入就不用再輸帳密),沒有的話就會開啟網頁。之後就算按 Logout,如果手機上的 Facebook 沒有登出,你 App 裡也不用再輸一次帳密
    - 那如果要在自己的 app 裏面,連 Facebook 帳號一起登出怎麼做? 這篇StackOverflow 有提出他遇到的類似問題。至於解法,他也有在自己的 Blog 上以專文解釋,下面是連結

Android problem – Note 1: Problem Logout button in Facebook SDK 3.0

如果我的理解沒錯,那是因為 Facebook 預設具有 Single Sign-on 的機制。所以只要動點手腳把它 suppress 即可。

4. Done! Next?
[Android] Facebook SDK - Personalize
[Facebook] Login


---

補充
如果您需要更多的 permission,可以參考 Login for Android | Facebook Developer 的介紹。需要注意的是, Scrumptious 是把 Login 拆成兩個 fragment, 而 Login for Android 是在同一個頁面解決。
所以如果您像我一樣,基底是使用 Scrumptious 的 code, 卻又要跟使用者拿更多的 permission, 請注意
authButton.setFragment(this);
這一行記得要 comment 掉,不然會出錯。

沒有留言 :

張貼留言