Autentikasi dan Mengambil Data Pengguna dengan Facebook SDK

Tutorial ini sudah banyak didokumentasikan di blog-blog baik dalam dan luar negeri, tetapi sangat membingungkan bagi saya. Beberapa tutorial menggunakan JavaScript SDK, sedangkan yang lain menggunakan PHP SDK. Belum lagi, banyak di antaranya yang sudah kadaluarsa dan diperburuk oleh revisi dari Facebook yang tidak menentu.

Hal lain yang juga membingungkan adalah perbedaan tampilan kotak dialog yang menanyakan izin untuk mengakses data-data. Bandingkan tampilan dialog yang saya ambil dari Facebook Developers Guide berikut dengan yang dihasilkan dari tutorial ini.

login with facebook

Sebenarnya hanya ada 2 hal dasar yang menjadi alasan untuk menggunakan Facebook SDK.
1. Kita mempunyai sistem “register” dan “login” sendiri, dan ingin menambahkan “Login with Facebook” sebagai pilihan bagi pengguna yang malas untuk mendaftar secara normal.
2. Kita membutuhkan data-data pengguna yang sudah dicatat dengan baik oleh Facebook, tentunya dengan persetujuan pemilik akun.

Dokumentasi dan kode sumber yang ada di Facebook Developers Guide sudah lengkap, namun susah diikuti dan tidak semuanya saya butuhkan. Tutorial ini akan menggabungkan Javascript SDK dan PHP SDK, karena cara ini menurut saya paling sederhana untuk memenuhi 2 kebutuhan dasar di atas.

Langkah-langkah untuk menghubungkan website dengan Facebook SDK adalah:
1. Daftarkan website pada halaman Facebook Developers, di situ akan diperoleh “App ID” dan “App Secret”.
2. Buat sebuah table pada database untuk menyimpan data-data pengguna dari Facebook. Field-nya sesuai kebutuhan saja, contoh: nama, password, email, tipe (password yang dimaksud di sini bukan password facebook dan tipe akan berisi “facebook” jika data diambil dari facebook dan “normal” jika tidak).
3. Download Facebook SDK. Ambil semua isi folder “src” (kita hanya membutuhkan ini).
4. Tombol login bisa menggunakan tag HTML biasa

<div class="fb-login-button">

atau menggunakan JavaScript SDK.

<fb:login-button>

Dengan ini kita bisa mengakses data-data pengguna yang diatur secara publik (tidak disembunyikan), misalnya id, nama, jenis kelamin. Data-data yang tidak bisa diakses publik harus ditulis ke dalam atribut scope.

<fb:login-button scope="email, read_stream"></fb:login-button>

5. Deklarasikan Facebook object di paling atas halaman. Jangan lupa isi “App ID” dan “App secret”. Kemudian ambil data-data pengguna (sudah termasuk yang ditulis di atribut scope tadi) dengan Facebook API.

require_once("facebook.php");

$config = array();
$config['appId'] = '';
$config['secret'] = '';

$facebook = new Facebook($config);

$user = $facebook->getUser();

if ($user) {
  try {
    $user_profile = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    error_log($e);
    $user = null;
  }
}

6. Terakhir, data-data yang sudah diperoleh dari Facebook API bisa diolah sesuai keinginan. Untuk lebih memahami, baca komentar yang ada pada kode sumber.

<?php if($user) { ?>

//tampilkan foto dan nama user		      
<img src="https://graph.facebook.com/<?php echo $user; ?>/picture">
<?=$user_profile['name']?>
		    
<?php
//ambil data-data yang ingin disimpan
$fb_id = $user_profile['id'];
$username = $user_profile['username'];
$email = $user_profile['email'];

//periksa apakah user sudah pernah login
$insert = true;
if (/*query untuk memeriksa apakah data sudah ada di database*/)
    $insert = false;

//jika pertama kali login, masukan data user ke database
if($insert) {
    /*query INSERT untuk memasukan data ke database*/
}

//login user
/* kode untuk login user dan SESSION */
?>

<?php } else { ?>
<fb:login-button scope="email, read_stream"></fb:login-button>
<?php } ?>

Gabungkan langkah ke-5 dan ke-6 serta tambahkan JavaScript SDK. Akhirnya kita akan memperoleh data dalam bentuk array setelah login dengan Facebook.

<?php 
require_once("facebook.php");

$config = array();
$config['appId'] = 'isi_dengan_app_id';
$config['secret'] = 'isi_dengan_app_secret';

$facebook = new Facebook($config);

$user = $facebook->getUser();

if ($user) {
  try {
    $user_profile = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    error_log($e);
    $user = null;
  }
}

if ($user) { ?>

<pre>
<?php print_r($user_profile) ?>
</pre>

<?php } else { ?>
<fb:login-button scope="email, read_stream"></fb:login-button>
<?php } ?>
<div id="fb-root"></div>

<script>
window.fbAsyncInit = function() {
  FB.init({
    appId: '<?php echo $facebook->getAppID() ?>',
    cookie: true,
    xfbml: true,
    oauth: true
  });
  FB.Event.subscribe('auth.login', function(response) {
    window.location.reload();
  });
  FB.Event.subscribe('auth.logout', function(response) {
    window.location.reload();
  });
};
(function() {
  var e = document.createElement('script'); e.async = true;
  e.src = document.location.protocol +
    '//connect.facebook.net/en_US/all.js';
  document.getElementById('fb-root').appendChild(e);
}());
</script>

Comments

31 responses to “Autentikasi dan Mengambil Data Pengguna dengan Facebook SDK”

  1. gaulhost Avatar

    wah bagus sekali kak tutornya,,saya merasa kagum dengan web ini
    salam kenal ya kak
    gaulhost.com

    1. Ella Chieyloliipoep Avatar

      tolong fb sya lupa kata sandi dan data-data nya

      1. Sibudi Avatar

        Masih ingat email/username tidak?
        Klik aja “Forgot your password”

      2. amry achmad Avatar
        amry achmad

        tolong fb saya lupa sandi dan selalu di mintai generator kode,bgmn mau dpt,fb sj nda bisa terbuka

        1. Aniyah Avatar
          Aniyah

          tolong fb saya lupa sandi dan selalu di mintai generator kode,bgmn mau dpt,fb sj nda bisa terbuka bagaimana plis mohon bantuannnya mohon

  2. Darryl Avatar
    Darryl

    Tutorial ini ditujukan untuk PHP fundamental atau menggunakan Framework ya?

    karena ketika saya coba, ada error di bagian ini…

    $facebook = new Facebook($config);

    $user = $facebook->getUser();

    dan tanda “->” mengingatkan saya pada syntax framework CI (apakah betul menggunakan CI?)..
    mohon bantuannya mas Budi..

    1. Sibudi Avatar

      Syntax CI itu ya PHP juga. Notasi “->” digunakan untuk mengakses variable atau method pada sebuah object. Contoh:

      class Orang {
      $nama = “Darryl”;
      }

      $komentator = new Orang();
      echo $komentator -> nama; // Darryl

      1. Darryl Avatar
        Darryl

        Oo… oke wa ngerti skrg… jadi “->” dpt digunakan utk mengambil nilai dari sbuah variabel, dan variabel itu sndr ga perlu pake tanda “$” kalo ud pake tanda “->” ya berarti… thanks mas Budi! 😀

  3. Darryl Avatar
    Darryl

    oh ya, saya skalian ingin bertanya, untuk menampilkan foto saat membuat komen seperti ini, hanya dengan cara memasukkan email (dari tebakan saya), bgmn ya? hehe thanks bgt nih sblmnya..

    1. Sibudi Avatar

      Ya memang benar untuk mengambil foto memerlukan alamat email dengan menggunakan layanan dari gravatar.com.

      1. Darryl Avatar
        Darryl

        okee masss… trims buat jawabannya.. 😀 nice share!!

  4. sapto Avatar
    sapto

    mas klo mao nampilin wall + comentar gmn yah.

  5. muncrat Avatar

    keren mas…

  6. Hafiizh Eko Avatar

    Saya kurang mengerti di bagian 4-akhir. Mohon penjelasannya mas budi!!

  7. designs Avatar

    Regarding these facts in the field of kitchen appliances business, Kutchina
    the brand and the best provider of services of modular kitchen Kolkata
    offers greater class products during a proficient deliverance system to their consumers at practical prices.
    The different types of modules in a modular kitchen include kitchen cabinets, worktop, chimney and all the other electronic and mechanical appliances used in a kitchen.
    Everybody needs to contain an elegant and stylish kitchen, as
    thats the merely position for the storage space of food.

  8. modular kitchen Avatar
    modular kitchen

    Cooking has become a joyful experience with the advent of
    modular kitchens. Like high school rodeo, trail
    riding, family vacations and retirement traveling the country.
    Place one bed behind the other against the wall, and create a storage partition in between.

  9. abu hisab Avatar

    ternyata dapat pencerahan disini, alhamdulillah! terimakasih.
    semoga makin lancar saja rejekinya, amin.

  10. Handi Avatar
    Handi

    Mau tanya skrg untuk ambil profile picture di fb kok tidak bisa ya?

  11. Aksan Zalendra Avatar
    Aksan Zalendra

    facebook saya lupa kata sandi , waktu login kata sandi diganti 5 jam yang lalu , bisa dibilang dihack orang . cara ngembaliinnya gimana ya ? di youtube ada cara mengembalikannya menggunakan script melalui inspect element cuman kurang paham untuk mendapatkan scriptnya dimana -_- mohon bantuannya 🙂

  12. moh imam baehaqi Avatar
    moh imam baehaqi

    saya ingin jawabankenapa fb saya tidak bisa diperbaharui

  13. Abigail Rental Avatar

    waw sedap gan jadi lebih mudah dipahami 😀
    barangkali butuh jasa rental bisa ke Sewa Elf Bandung

  14. Irfan Maulana Avatar
    Irfan Maulana

    Bagus sekali ! Tapi kalo dijalankan di localhost bisa ga kak ?

  15. Irfan Maulana Avatar

    Bisa dijalankan dilocalhost kah ?

  16. Vonny Avatar
    Vonny

    Pagi,
    Kalau saya mau keluar dr FB suka muncul tulisan.. Autentikasi Facebook gagal..

    Sering kalau saya mau bikin status puls foto suka gk mau.
    Mohon petunjuk.
    Terima kasih.

    Salam,
    Vonny

  17. ландшафтный дизайн Харьков Avatar

    ландшафтный дизайн Харьков
    ландшафтный дизайн Харьков (Terrell)
    ландшафтный дизайн Харьков http://semena-baza.com/bitrix/rk.php?goto=http://dreamgarden.com.ua

  18. fransiska dewi Avatar

    Keren bgt mas tutorialnya, sana sini nyari susah bgt ga ada yg bs bantu, alhandulillah nemuin blog ini, makasih ya mas.. 🙂

    Sy ada project mas terkait postingan yg ini, brgkali minat, mohon pm. Thanks 🙂

  19. webpage Avatar

    I’m not certain where you’re getting your info, but great topic.
    I must spend a while studying much more or working out more.
    Thanks for magnificent info I was searching for this info for my
    mission.

  20. Martin Avatar
    Martin

    Askk… Kalau saya Mau ngambil tanggal lahir gmana gan?

  21. rizka mifta Avatar
    rizka mifta

    klo saat menghubungkan twitter ke facebook ada tulisan “failed to load the Facebook SDK. please make sure you are not blocking” itu di bagian mananya yang diperbaiki

  22. Dian Ermawan Avatar

    Assalamualaikum, Mantab Gan Ane Coba dulu

Leave a Reply

Your email address will not be published. Required fields are marked *