About Me

Hai, saya Rosihan Ari Yuana. Saya sehari-hari adalah mengajar di Universitas Sebelas Maret.

Bidang riset saya tentang adaptive learning, computer aided learning, dan datascience

Selain itu, saya juga seorang penulis buku dan blogger.

More about me...

  • Home
  • /
  • PHP
  • /
  • Membuat Buku Tamu dengan Akun Facebook (Bag 3)
PHP

Membuat Buku Tamu dengan Akun Facebook (Bag 3)

Artikel ini merupakan artikel terakhir tentang cara membuat bukutamu dengan akun Facebook. Sampai pada artikel ke-2, Anda sebenarnya sudah bisa mendapatkan sebuah buku tamu yang ketika user mengisinya harus login terlebih dahulu dengan akun Facebook mereka.

Nah.. pada artikel bagian ke-3 ini, buku tamu tersebut kita akan modifikasi sedikit supaya isi komentar yang diisikan user pada buku tamu secara otomatis akan terpublish di status update di Facebook mereka.

Bagi Anda yang ingin mempraktikannya, saya sarankan baca terlebih dahulu artikel ke-1 dan ke-2 nya supaya tidak bingung 🙂

Masalah utama dari implementasi ide di atas adalah bagaimana cara supaya komentar user terpublish otomatis di status update Facebook mereka. Solusi dari permasalahan tersebut adalah dengan menggunakan POST REQUEST ke URL:

https://graph.facebook.com/me/feed?access_token=.....&message=....

parameter ‘access_token’ pada URL di atas merupakan kode akses yang diberikan Facebook setelah si user login menggunakan akun FB mereka, dan ‘message’ adalah isi teks yang akan terpublish ke status update mereka.

Sebagai contoh:

https://graph.facebook.com/me/feed?access_token=xxxx&message=hallo

Lantas, bagaimana implementasi dari POST REQUEST di atas? untuk melakukan POST REQUEST kita bisa menggunakan CURL di PHP dengan perintah berikut ini:

$url = "https://graph.facebook.com/me/feed";
$curlHandle = curl_init();
curl_setopt($curlHandle, CURLOPT_URL, $url);
curl_setopt($curlHandle, CURLOPT_POSTFIELDS, "access_token=...&message=...);
curl_setopt($curlHandle, CURLOPT_HEADER, 0);
curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curlHandle, CURLOPT_TIMEOUT,30);
curl_setopt($curlHandle, CURLOPT_POST, 1);
curl_exec($curlHandle);
curl_close($curlHandle);

Keterangan:

Perintah

curl_setopt($curlHandle, CURLOPT_POSTFIELDS, "access_token=...&message=...);

digunakan untuk memposting parameter yang terdiri dari ‘access_token’ dan ‘message’. Untuk mendapatkan kode ‘access_token’ setelah si user login, gunakan perintah $cookie['access_token'] di PHP.

Sedangkan perintah

curl_setopt($curlHandle, CURLOPT_POST, 1);

menunjukkan tipe request yang dilakukan adalah POST Request.

Trus… perintah-perintah di atas nantinya diletakkan di mana pada script buku tamunya? tentu saja diletakkan pada proses submitnya, yaitu di dalam

if (isset($_POST['submit']))
{
  ...
}

Oya… satu lagi yang terpenting, bahwa sebelum Anda terapkan cara di atas, Anda terlebih dahulu menambahkan modul untuk memberikan otorisasi kepada si user bahwa komentarnya akan terpublish di status update Facebooknya. Tanpa modul ini, perintah di atas tidak akan berjalan. Lantas… caranya bagaimana supaya memunculkan otoritasi tersebut? caranya adalah dengan memodifikasi tombol Facebook loginnya, yang tadinya berbentuk

<fb:login-button></fb:login-button>

menjadi

<fb:login-button perms="publish_stream"></fb:login-button>

OK.. deh… setelah ide di atas diterapkan, berikut ini script buku tamunya secara keseluruhan

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:fb="http://www.facebook.com/2008/fbml">
  <body>
    <h1>Buku Tamu</h1>
    <?php include "cookie.php"; ?>
    <?php
    // koneksi ke mysql
    mysql_connect(dbHost, dbUser, dbPass);
    mysql_select_db(dbName);
 
    // proses simpan data komentar ke DB 
 
    if (isset($_POST['submit']))
    {
       // baca tanggal posting komentar
       $tgl = date("Y-m-d");
       // baca ID FB dari pengisi komentar 
       $idFB = $_POST['idFB'];
       // baca isi komentar
       $komentar = $_POST['komentar'];
 
       // query simpan data ke tabel guestbook
       $query = "INSERT INTO guestbook (idFB, tgl, komentar) VALUES ('$idFB', '$tgl', '$komentar')";
       mysql_query($query);

       // mengirim komentar ke status update FB si user dengan POST Request
       $url = "https://graph.facebook.com/me/feed";
       $curlHandle = curl_init();
       curl_setopt($curlHandle, CURLOPT_URL, $url);
       curl_setopt($curlHandle, CURLOPT_POSTFIELDS, "access_token=".$cookie['access_token']."&message=".$komentar);
       curl_setopt($curlHandle, CURLOPT_HEADER, 0);
       curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, 1);
       curl_setopt($curlHandle, CURLOPT_TIMEOUT,30);
       curl_setopt($curlHandle, CURLOPT_POST, 1);
       curl_exec($curlHandle);
       curl_close($curlHandle);
    } 
 
    // proses menampilkan semua data komentar
 
    $query = "SELECT * FROM guestbook ORDER BY id DESC";
    $hasil = mysql_query($query);
    while ($data = mysql_fetch_array($hasil))
    {
       // proses parsing data profile pengisi komentar berdasarkan ID FB
       $user = json_decode(file_get_contents("https://graph.facebook.com/".$data['idFB']), true);
       // menampilkan photo profile
       echo "<p><img src='https://graph.facebook.com/".$data['idFB']."/picture'><br>";
       // menampilkan nama profile dan link profile FB nya
       echo "Nama: <a href='".$user['link']."'>".$user['name']."</a><br>";
       // menampilkan email profile FB
       echo "Email: ".$user['email']."<br>";
       // menampilkan tanggal posting komentar 
       echo "Tanggal posting: ".$data['tgl']."<br>";
       // menampilkan komentarnya
       echo "Komentar: ".$data['komentar']."</p><hr>";
    }
    ?>
 
    <?php if ($cookie) { ?>
    <?php
    // setelah login sukses
 
    // proses parsing data JSON profile user dengan ID Facebook 
    $user = json_decode(file_get_contents("http://graph.facebook.com/".$cookie['uid']), true);
 
    // menampilkan sapaan berisi nama lengkap
    echo "<p>Selamat datang ".$user['name'].", silakan isi buku tamunya di sini</p>";
    ?>
 
    <form method="post" action="<?php $_SERVER['PHP_SELF']?>">
    <textarea name="komentar" cols="30" rows="10"></textarea>
    <input type="hidden" name="idFB" value="<?php echo $cookie['uid']; ?>">
    <br>
    <input type="submit" name="submit" value="Simpan">
    </form>   
 
    <?php } else { ?>
      <!-- jika user belum login maka munculkan tombol login -->
      <fb:login-button perms="publish_stream"></fb:login-button>
    <?php } ?>
 
    <div id="fb-root"></div>
    <script src="http://connect.facebook.net/en_US/all.js"></script>
    <script>
      FB.init({appId: '<?= FACEBOOK_APP_ID ?>', status: true,
               cookie: true, xfbml: true});
      FB.Event.subscribe('auth.login', function(response) {
        window.location.reload();
      });
    </script>
  </body>
</html>

Mudah bukan membuatnya? Selamat mencoba ya… semoga bermanfaat bagi semuanya. Hasil dari script di atas dapat dilihat di http://fb.rosihanari.net. Jangan lupa tinggalkan pesan dan komentar di buku tamunya ya… 🙂

 

Saya seorang dosen dan peneliti di Universitas Sebelas Maret. Bidang penelitian saya tentang: adaptive learning, datascience, dan computer aided learning. Selain itu saya juga seorang blogger, serta penulis buku tentang pemrograman, dan matematika.

Leave a Reply