Mulai 5 Oktober 2021, Facebook Login tidak akan lagi mendukung browser tersemat Android (Tampilan Web) untuk mengautentikasi pengguna.

Untuk informasi latar belakang tentang penghentian ini, lihat postingan blog Penghentian dukungan untuk autentikasi Facebook Login di browser tersemat Android.

Untuk informasi tentang penghentian Tampilan Web dan menggunakan Tab Khusus, lihat Penghentian Tampilan Web Android.

Facebook Login untuk Android - Tutorial Singkat

Dengan Facebook SDK untuk Android, orang dapat masuk ke aplikasi Anda dengan Facebook Login. Saat orang login ke aplikasi Anda dengan Facebook, mereka dapat memberi izin ke aplikasi Anda sehingga Anda dapat mengambil informasi atau melakukan tindakan di Facebook atas nama mereka.

Untuk contoh proyek yang menunjukkan cara mengintegrasikan Facebook Login ke aplikasi Android, lihat FBLoginSample di GitHub.

Ikuti langkah-langkah di bawah untuk menambahkan Facebook Login ke aplikasi Anda.

1. Masuk

Masuk ke Facebook untuk membuat aplikasi atau mendaftar sebagai developer.

2. Unduh Aplikasi Facebook

Unduh aplikasi Facebook dengan mengeklik tombol di bawah ini.

3. Integrasikan Facebook SDK

SDK Facebook Login untuk Android merupakan komponen Facebook SDK untuk Android. Untuk menggunakan SDK Facebook Login di proyek Anda, jadikan SDK Facebook Login dependensi di Maven, atau unduh. Untuk mendukung perubahan di Android 11, gunakan SDK versi 8.1 atau yang lebih tinggi.

Menggunakan Maven

  1. Di proyek Anda, buka your_app > Gradle Scripts > build.gradle (Project) pastikan repositori berikut tercantum di buildscript { repositories {}}:
    mavenCentral() 
    
  2. Dalam proyek Anda, buka your_app > Gradle Scripts > build.gradle (Module: app) dan tambahkan pernyataan implementasi berikut ini ke bagian dependencies{} untuk membuat dependensi ke versi terbaru dari SDK Facebook Login:
     implementation 'com.facebook.android:facebook-login:latest.release'
    
  3. Buat proyek Anda.

4. Edit Sumber Daya dan Manifest Anda

Jika Anda menggunakan 5.15 atau versi lebih baru Facebook SDK untuk Android, Anda tidak perlu menambahkan aktivitas atau filter niat untuk Tab Khusus Chrome. Fungsi ini disertakan dalam SDK.

Setelah Anda mengintegrasikan Facebook Login, Peristiwa Aplikasi tertentu dicatat dan dikumpulkan secara otomatis untuk Pengelola Peristiwa, kecuali Anda menonaktifkan Pencatatan Peristiwa Aplikasi Otomatis. Untuk detail tentang informasi apa saja yang dikumpulkan dan cara menonaktifkan pencatatan peristiwa aplikasi otomatis, lihat Pencatatan Peristiwa Aplikasi Otomatis.

Buat string untuk ID aplikasi Facebook Anda dan untuk aplikasi yang harus mengaktifkan Tab Khusus Chrome. Selain itu, tambahkan FacebookActivity ke manifes Android Anda.
  1. Buka file /app/res/values/strings.xml Anda.
  2. Tambahkan elemen string dengan namafacebook_app_id, fb_login_protocol_scheme, dan facebook_client_token, lalu atur nilai untuk ID Aplikasi dan Token Klien Anda. Contoh: jika ID aplikasi Anda adalah 1234 dan token klien Anda adalah 56789, kode Anda terlihat seperti berikut ini:
    <string name="facebook_app_id">1234</string>
    <string name="fb_login_protocol_scheme">fb1234</string>
    <string name="facebook_client_token">56789</string>
    
    
  3. Buka file /app/manifest/AndroidManifest.xml Anda.
  4. Tambahkan elemen meta-data ke elemen application untuk ID aplikasi dan token klien Anda:
    <application android:label="@string/app_name" ...>
        ...
       	<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
       	<meta-data android:name="com.facebook.sdk.ClientToken" android:value="@string/facebook_client_token"/>
        ...
    </application>
    
  5. Tambahkan aktivitas untuk Facebook, serta filter niat dan aktivitas untuk Tab Khusus Chrome di dalam elemen application Anda:
        <activity android:name="com.facebook.FacebookActivity"
            android:configChanges=
                    "keyboard|keyboardHidden|screenLayout|screenSize|orientation"
            android:label="@string/app_name" />
        <activity
            android:name="com.facebook.CustomTabActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="@string/fb_login_protocol_scheme" />
            </intent-filter>
        </activity>
    
  6. Tambahkan elemen uses-permission ke manifes setelah elemen application:
    <uses-permission android:name="android.permission.INTERNET"/>
    
    
  7. (Opsional) Untuk keluar dari Izin ID Pengiklan, tambahkan elemen uses-permission ke manifes setelah elemen application:
    <uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="remove"/>
            
  8. Anda dapat langsung mengatur pencatatan otomatis Peristiwa Aplikasi ke “true” atau “false” dengan mengatur tanda AutoLogAppEventsEnabled di file AndroidManifest.xml.

  9. Buat proyek Anda.

5. Asosiasikan Nama Paket dan Kelas Default Anda dengan Aplikasi Anda

Anda harus login untuk menyelesaikan langkah ini.

6. Berikan Hash Kunci Pengembangan dan Rilis untuk Aplikasi Anda

Anda harus login untuk menyelesaikan langkah ini.

7. Aktifkan Single Sign-On untuk Aplikasi Anda

Anda harus login untuk menyelesaikan langkah ini.

8. Tambahkan Tombol Facebook Login

Cara paling sederhana untuk menambahkan Facebook Login ke aplikasi Anda adalah dengan menambahkan LoginButton dari SDK . LoginButton adalah elemen UI yang membungkus fungsi yang tersedia di LoginManager. Ketika seseorang mengeklik tombol, login dimulai dengan izin yang diatur di LoginManagerFacebook Login memerlukan izin public_profile lanjutan agar bisa digunakan oleh pengguna eksternal. Tombol mengikuti status login, dan menampilkan teks yang benar berdasarkan status autentikasi seseorang.
Untuk menambahkan tombol Facebook Login, terlebih dahulu tambahkan tombol tersebut ke file XML tata letak Anda:
<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. Daftarkan Panggilan Balik

Sekarang buat callbackManager untuk menangani tanggapan login dengan memanggil CallbackManager.Factory.create.
callbackManager = CallbackManager.Factory.create();
Jika Anda menambahkan tombol ke Fragmen, maka Anda juga harus memperbarui aktivitas Anda untuk menggunakan fragmen Anda. Anda dapat menyesuaikan properti Login button dan mendaftarkan panggilan balik di metode onCreate() atau onCreateView() Anda. Properti yang dapat Anda sesuaikan meliputi LoginBehavior, DefaultAudience, ToolTipPopup.Style, dan izin pada LoginButton. Contoh:
      
    private static final String EMAIL = "email";
      
    loginButton = (LoginButton) findViewById(R.id.login_button);
    loginButton.setReadPermissions(Arrays.asList(EMAIL));
    // If you are using in a fragment, call loginButton.setFragment(this);    

    // Callback registration
    loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            // App code
        }

        @Override
        public void onCancel() {
            // App code
        }

        @Override
        public void onError(FacebookException exception) {
            // App code
        }
    });
Untuk menanggapi hasil login, Anda harus mendaftarkan panggilan balik dengan LoginManager atau LoginButton. Jika Anda mendaftarkan panggilan balik dengan LoginButton, tidak perlu mendaftarkan panggilan balik di pengelola Login.
Anda menambahkan panggilan balik LoginManager ke metode onCreate() fragmen atau aktivitas Anda:
    callbackManager = CallbackManager.Factory.create();      
      
    LoginManager.getInstance().registerCallback(callbackManager,
            new FacebookCallback<LoginResult>() {
                @Override
                public void onSuccess(LoginResult loginResult) {
                    // App code
                }

                @Override
                public void onCancel() {
                     // App code
                }

                @Override
                public void onError(FacebookException exception) {
                     // App code   
                }
    });
Jika login berhasil, parameter LoginResult memiliki AccessToken yang baru, dan izin terbaru yang diberikan atau ditolak.
Anda tidak memerlukan registerCallback agar berhasil login, Anda dapat memilih untuk mengikuti perubahan token akses saat ini dengan kelas AccessTokenTracker yang diuraikan di bawah.
Terakhir, di metode onActivityResult Anda, panggil callbackManager.onActivityResult untuk meneruskan hasil login ke LoginManager melalui callbackManager.

Jika Anda menggunakan aktivitas atau fragmen AndroidX, Anda tidak perlu mengganti onActivityResult.

      @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        callbackManager.onActivityResult(requestCode, resultCode, data);
        super.onActivityResult(requestCode, resultCode, data);
    }
Setiap aktivitas dan fragmen yang Anda integrasikan dengan Facebook SDK Login atau Bagikan harus meneruskan onActivityResult ke callbackManager.

10. Periksa Status Login

Aplikasi Anda hanya dapat memiliki satu orang yang masuk dalam satu waktu, dan LoginManager mengatur AccessToken dan Profile terkini untuk orang tersebut. FacebookSDK menyimpan data ini dalam preferensi bersama dan mengaturnya pada awal sesi. Anda dapat melihat apakah seseorang sudah masuk dengan memeriksa AccessToken.getCurrentAccessToken() dan Profile.getCurrentProfile().
Anda dapat memuat AccessToken.getCurrentAccessToken dengan SDK dari cache atau dari bookmark aplikasi saat aplikasi Anda dibuka dari awal. Anda harus memeriksa validitasnya di metode onCreateActivity Anda:
AccessToken accessToken = AccessToken.getCurrentAccessToken();
boolean isLoggedIn = accessToken != null && !accessToken.isExpired();
  
Selanjutnya, Anda nantinya akan dapat melakukan masuk sebenarnya, seperti di OnClickListener tombol khusus:
      
LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile"));

11. Aktifkan Login Ekspres

Login Ekspres memasukkan orang ke dalam dengan akun Facebooknya lintas perangkat dan platform. Jika seseorang masuk ke aplikasi Anda di Android dan kemudian berganti perangkat, login ekspres akan memasukkannya dengan akun Facebook-nya, dan bukannya memintanya memilih metode login. Ini menghindari membuat akun duplikat atau gagal login sama sekali. Untuk mendukung perubahan di Android 11, pertama-tama tambahkan kode berikut ke elemen queries di file /app/manifest/AndroidManifest.xml Anda.
  
<queries>
  <package android:name="com.facebook.katana" />
</queries> 
  
Kode berikut ini menunjukkan cara mengaktifkan login ekspres.
LoginManager.getInstance().retrieveLoginStatus(this, new LoginStatusCallback() {
    @Override
    public void onCompleted(AccessToken accessToken) {
        // User was previously logged in, can log them in directly here.
        // If this callback is called, a popup notification appears that says
        // "Logged in as <User Name>"
    }
    @Override
    public void onFailure() {
        // No access token could be retrieved for the user
    }
    @Override
    public void onError(Exception exception) {
        // An error occurred
    }
});

  

Langkah Berikutnya

Selamat, Anda sudah menambahkan Facebook Login ke aplikasi Android Anda! Pastikan Anda melihat halaman dokumentasi kami lainnya untuk panduan lanjutan.
Terapkan panggilan balik penghapusan data guna menanggapi permintaan orang untuk menghapus data mereka dari Facebook.
Melacak token akses dan profil pengguna Anda.
Mengelola data yang dapat diakses aplikasi Anda melalui Facebook Login.
Mengalami masalah dalam mengintegrasikan Facebook Login? Lihat daftar masalah umum dan cara memecahkannya.
Tergantung data Facebook yang Anda minta dari orang yang menggunakan Facebook Login, Anda mungkin harus mengajukan aplikasi Anda untuk ditinjau sebelum diluncurkan.
Untuk membuat alur login Anda sendiri, lihat Membuat Alur Login Secara Manual.