1.先註冊FB後台帳號
https://developers.facebook.com/
2.建立應用程式
我的應用程式 > 建立應用程式 > 新增產品
3.選擇Facebook登入
匯入FB SDK
Gradle(Project)
buildscript {
repositories {
mavenCentral()
}
}
Gradle(Module)
dependencies {
implementation 'com.facebook.android:facebook-android-sdk:[4,5)'
}
4.選擇自己專案PackageName
到AndroidManifest.xml
套件名稱 package
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.doughpack">
預設活動類別名稱 package + .SplashAct
<activity
android:name=".module.home.ui.activity.SplashAct"
android:screenOrientation="portrait"
android:theme="@style/AppTheme.Full">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
5.密鑰雜湊
到電腦環境變數 > 系統變數新增到java/bin下的路徑
開啟git bash
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
輸入密碼android 就會有雜湊碼
6.添加資源到AndroidManifest
開啟 /app/res/values/strings.xml 檔案。
在 application 元素後方加入下列 uses-permission 元素:
在 application 元素內加入下列 meta-data 元素、Facebook 活動,以及 Chrome 自訂頁籤的活動和意圖篩選器
7.在Application初始化FB
@Override
public void onCreate() {
super.onCreate();
FacebookSdk.sdkInitialize(getApplicationContext());
AppEventsLogger.activateApp(this);
}
8.新增FB登入按鈕
<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" />
9.註冊CallBack
callbackManager = CallbackManager.Factory.create();
LoginManager instance = LoginManager.getInstance();
//利用網頁登入
instance.setLoginBehavior(LoginBehavior.WEB_ONLY);
//是否有登入取得Token
instance.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Profile currentProfile = Profile.getCurrentProfile();
if (currentProfile != null) {
Log.d("fblogin", "onSuccess: " + currentProfile.getName());
Log.d("fblogin", "onSuccess: " + loginResult.getAccessToken().getToken());
Log.d("fblogin", "onSuccess: " + currentProfile.getId());
} else {
Toast.makeText(SocialAuthAct.this, "請在認證一次", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancel() {
Log.d("fblogin", "onCancel: ");
}
@Override
public void onError(FacebookException error) {
Log.d("fblogin", "onError:" + error.toString());
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
callbackManager.onActivityResult(requestCode, resultCode, data);
super.onActivityResult(requestCode, resultCode, data);
}