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.
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>
wah bagus sekali kak tutornya,,saya merasa kagum dengan web ini
salam kenal ya kak
gaulhost.com
help facebook
tolong fb sya lupa kata sandi dan data-data nya
Masih ingat email/username tidak?
Klik aja “Forgot your password”
tolong fb saya lupa sandi dan selalu di mintai generator kode,bgmn mau dpt,fb sj nda bisa terbuka
tolong fb saya lupa sandi dan selalu di mintai generator kode,bgmn mau dpt,fb sj nda bisa terbuka bagaimana plis mohon bantuannnya mohon
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..
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
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! 😀
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..
Ya memang benar untuk mengambil foto memerlukan alamat email dengan menggunakan layanan dari gravatar.com.
okee masss… trims buat jawabannya.. 😀 nice share!!
mas klo mao nampilin wall + comentar gmn yah.
keren mas…
Saya kurang mengerti di bagian 4-akhir. Mohon penjelasannya mas budi!!
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.
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.
ternyata dapat pencerahan disini, alhamdulillah! terimakasih.
semoga makin lancar saja rejekinya, amin.
Mau tanya skrg untuk ambil profile picture di fb kok tidak bisa ya?
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 🙂
saya ingin jawabankenapa fb saya tidak bisa diperbaharui
waw sedap gan jadi lebih mudah dipahami 😀
barangkali butuh jasa rental bisa ke Sewa Elf Bandung
Bagus sekali ! Tapi kalo dijalankan di localhost bisa ga kak ?
Bisa dijalankan dilocalhost kah ?
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
ландшафтный дизайн Харьков
ландшафтный дизайн Харьков (Terrell)
ландшафтный дизайн Харьков http://semena-baza.com/bitrix/rk.php?goto=http://dreamgarden.com.ua
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 🙂
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.
Askk… Kalau saya Mau ngambil tanggal lahir gmana gan?
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
Assalamualaikum, Mantab Gan Ane Coba dulu
← Previous Post
Next Post →
Cari Catatan Saya
Catatan Terbaru
Kategori
Blogroll
Arsip
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.
© 2025 Sibudi </>. Theme: Ari by Elmastudio. Proudly powered by WordPress.