Translate

2015年12月9日 星期三

Facebook Android SDK 4 串接(一) - Login 取Token

註冊APP ID:
首先你需要一組facebook_app_id,請到https://developers.facebook.com/quickstarts/?platform=android申請
  1. 建立APP的專案名稱
  2. 輸入Package Name及Default Activity Class Name
  3. 輸入development and release key hashes (下面有教學)
  4. 加入Logger到你的APP
  5. 取得facebook_app_id
  6. 然後去你創建的Settings裡,把Single Sign On打開
如何取得key hashes:
  1. 產生Facebook Key Hash 需要使用到OpenSSL這個工具,可以先到OpenSSL for Windows下載Binaries Zip這個版本
  2. 把openssl-0.9.8h-1-bin\bin\openssl.exe複製到你的keystore位置
  3. 打開cmd,並指定位置至keystore位置。
  4. 根據下列指令取得key
  5. 回到註冊步驟3填入
※沒有執行步驟1、2則會出現'openssl' 不是內部或外部命令、可執行的程式或批次檔。
YOUR_RELEASE_KEY_ALIAS = 你的key名稱
YOUR_RELEASE_KEY_PATH = 你的key名稱.副檔名
keytool -exportcert -alias YOUR_RELEASE_KEY_ALIAS -keystore YOUR_RELEASE_KEY_PATH | openssl sha1 -binary | openssl base64
示意圖:

接下來就是Coding的部分了。

Gradle:
匯入Facebook的SDK。
compile 'com.facebook.android:facebook-android-sdk:4.7.0'


AndroidManifest:

新增網路權限
<uses-permission android:name="android.permission.INTERNET" />

將此匯入至application之中,再到string.xml新增facebook_app_id。
<meta-data
    android:name="com.facebook.sdk.ApplicationId"
    android:value="@string/facebook_app_id" />

<activity android:name="com.facebook.FacebookActivity"
    android:configChanges=
        "keyboard|keyboardHidden|screenLayout|screenSize|orientation"
    android:theme="@android:style/Theme.Translucent.NoTitleBar"
    android:label="@string/app_name" />

Layout:
新增Facebook的LoginButton。
<com.facebook.login.widget.LoginButton
    android:id="@+id/login_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:layout_marginTop="30dp"
    android:layout_marginBottom="30dp" /> 

MainActivity:
public class MainActivity extends AppCompatActivity {
    CallbackManager callbackManager;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        FacebookSdk.sdkInitialize(this.getApplicationContext());
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        callbackManager = CallbackManager.Factory.create();
        LoginButton loginButton = (LoginButton) findViewById(R.id.login_button);
        loginButton.registerCallback(callbackManager, new FacebookCallback() {

            @Override
            public void onSuccess(LoginResult loginResult) {
                Log.d("onSuccess",loginResult.getAccessToken().getToken().toString());
            }

            @Override
            public void onCancel() {
                Log.d("onCancel","onCancel");
            }

            @Override
            public void onError(FacebookException e) {
                e.printStackTrace();
            }
        });
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        callbackManager.onActivityResult(requestCode, resultCode, data);
    }
    @Override
    protected void onResume() {
        super.onResume();
        AppEventsLogger.activateApp(this);
    }
    @Override
    protected void onPause() {
        super.onPause();
        AppEventsLogger.deactivateApp(this);
    }
}

Log.d("onSuccess",loginResult.getAccessToken().getToken().toString())取得需要之Token。
成功取得Token

之後就下篇,代續...


2 則留言: