Android

Android 導入FB Login

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 檔案。

1161725410572948 fb1161725410572948

在 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);
  }

發表迴響