2017年3月28日 星期二

Facebook Android SDK: 登入

1.啟用單一登入 
 點選設定>>基本資料   →步驟1

在自己的應用程式設定頁面內將最下方的『ToggleButton』改為是,記得要按下儲存變更
  →步驟2



2.新增<Facebook 登入>按鈕(Layout)
登入按鈕必須要使用特殊的LinkButton,是FB所提供的客製化Button,
在恰當的介面layout的xml中,加上這個按鈕
  
<com.facebook.login.widget.LoginButton android:layout_width="wrap_content" 
 android:layout_height="wrap_content" 
 android:layout_alignParentTop="true" 
 android:layout_alignParentStart="true"     
 android:id="@+id/a" />

  • LoginButton - 使用要求的讀取或發布權限起始登入程序
  • CallbackManager - 用於將呼叫回傳至 Facebook SDK 以及您的已註冊回應呼叫。應該從起始活動 avtivity 或片段 fragment 的 onActivityResult 呼叫此函數。
  • AccessToken(存取權限) - 使用此類別的圖形 API 要求 (GraphAPI)。他會顯示用戶編號及被接受和被拒絕的權限。
  •  Profile - 此類別具有已登入用戶的基本資料。

LoginButton 是套件 LoginManager 中的 UI控制項。使用者點擊這個按鈕時,將會以LoginManager 中設定的權限初始化登入。此按鈕會追蹤登入狀態,並根據用戶的驗證狀態顯示正確文字。

3.增加程式部分
java主程式裡
介面對應的 Activity中,onCreate 的方法裡,要初始化Facebook SDK
由於目前的APP 使用Fragment 設計居多,所以FB開發者教學裡是以 Fragment 為主要教學方式
設定欄位類別
public class  MainActivity extends AppCompatActivity {
CallbackManager callbackManeger;
    AccessToken accessToken;
由於會反覆用到,所以設定在Activity欄位裡
 
首先先初始化 Facebook SDK
FacebookSdk.sdkInitialize(getApplicationContext()); 
接下來連結程式與layout的 linkbutton
 
LoginButton loginButton=(LoginButton)findViewById(R.id.a); 

再建立CallbackManager
callbackManeger =CallbackManager.Factory.create();
 
然後設定當LoginButton 收到回傳(callback)的處理動作:成功、失敗、取消
loginButton.registerCallback(callbackManeger, new FacebookCallback<LoginResult>() {
  ....
}); 

如果登入成功,APP會收到一組AccessToken(剛剛程式裡的欄位變數accessToken),
之後要用到graph API的地方都用這組token 
接著送出一個request 出去,在onCompleted裡面會拿到一個傳入變數 JSONObject(變數名是object),
包裹著使用者資訊(name使用者姓名、link個人連結、id)
 
 
  
 

沒有留言:

張貼留言