Membuat sistem Login dan pendaftaran website menggunakan akun facebook
pada tahab ke dua ini kita akan membahas per file tentang bagaimana cara php meminta data dari facebook dan bagaimana cara php menyimpannya ke database pribadi kita sehingga kita dapat menggunakanya sesuai kebutuhan pertama-tama buka file Index.php dan perhatikan pada bagian
<h4>Hello sobat!</h4>
</div>
<a href="https://www.facebook.com/dialog/oauth?client_id=1236xxxxxxxxxxx&redirect_uri=http://www.namasitusmu.com/pendaftaranfb/facebook_auth.php&scope=publish_stream" title="Signup with facebook">
<button class="btn btn-primary">Signup with facebook</button>
</a>
code diatas merupakan script HTML membuat link biasa biasa yang di padukan dengan css sehingga menampilkan tombol yang apabila di klik akan memasuki alamat facebook konfirmasi berupa perizinan akses untuk di setujui oleh pengguna, pada halaman facebook, facebook akan melakukan fungsi get (mengambil) app id untuk mencocokkan aplikasi dan mengembalikan ke halaman redirect_uri=http://www.namasitusmu.com/pendaftaranfb/facebook_auth.php setelah semua proses selesai</div>
<a href="https://www.facebook.com/dialog/oauth?client_id=1236xxxxxxxxxxx&redirect_uri=http://www.namasitusmu.com/pendaftaranfb/facebook_auth.php&scope=publish_stream" title="Signup with facebook">
<button class="btn btn-primary">Signup with facebook</button>
</a>
pada halaman facebook_auth.php kita juga mengunakan fungsi get untuk mendapatkan data-data yang dikirim oleh facebook
berikut isi pada halaman facebook_auth.php
<?php
session_start();
include ("connect.php");
$code = $_GET['code'];
if(empty($code)) {
$_SESSION['state'] = md5(uniqid(rand(), TRUE)); //CSRF protection
$dialog_url = "https://www.facebook.com/dialog/oauth?client_id="
. $app_id . "&redirect_uri=" . urlencode($my_url) . "&state="
. $_SESSION['state'];
echo("<script> top.location.href='" . $dialog_url . "'</script>");
}
if($_REQUEST['state'] == $_SESSION['state']) {
$token_url = "https://graph.facebook.com/oauth/access_token?"
. "client_id=" . $app_id . "&redirect_uri=" . urlencode($my_url)
. "&client_secret=" . $app_secret . "&code=" . $code . "&scope=publish_stream";
$response = @file_get_contents($token_url);
$params = null;
parse_str($response, $params);
$graph_url = "https://graph.facebook.com/me?access_token="
. $params['access_token'];
$user = json_decode(file_get_contents($graph_url));
$username = $user->username;
$email = $user->email;
$facebook_id = $user->id;
// check if user in db => login
$result = mysql_query("select * from `daftarfb` where `facebook_id`='$facebook_id'");
if (mysql_num_rows($result) == 1)
{
$usr = mysql_fetch_array($result);
$_SESSION['username'] = $usr['username'];
$_SESSION['uid'] = $usr['id'];
$_SESSION['facebook_id'] = $_usr['facebook_id'];
$_SESSION['access_token'] = $params['access_token'];
?>
<script>
top.location.href='home.php'
</script>
<?php
}
else // if user not in db
{
$join_date = date('Y-m-d h:i:s');
$query = mysql_query("INSERT INTO `daftarfb` (username, email, facebook_id, join_date)
VALUES ('$username', '$email', '$facebook_id', '$join_date')");
$_SESSION['uid'] = mysql_insert_id();
$_SESSION['username'] = $username;
$_SESSION['access_token'] = $params['access_token'];
$_SESSION['facebook_id'] = $_usr['facebook_id'];
?>
<script>
top.location.href='welcome.php'
</script>
<?php
}
}
else {
echo("The state does not match. You may be a victim of CSRF.");
}
?>
session_start();
include ("connect.php");
$code = $_GET['code'];
if(empty($code)) {
$_SESSION['state'] = md5(uniqid(rand(), TRUE)); //CSRF protection
$dialog_url = "https://www.facebook.com/dialog/oauth?client_id="
. $app_id . "&redirect_uri=" . urlencode($my_url) . "&state="
. $_SESSION['state'];
echo("<script> top.location.href='" . $dialog_url . "'</script>");
}
if($_REQUEST['state'] == $_SESSION['state']) {
$token_url = "https://graph.facebook.com/oauth/access_token?"
. "client_id=" . $app_id . "&redirect_uri=" . urlencode($my_url)
. "&client_secret=" . $app_secret . "&code=" . $code . "&scope=publish_stream";
$response = @file_get_contents($token_url);
$params = null;
parse_str($response, $params);
$graph_url = "https://graph.facebook.com/me?access_token="
. $params['access_token'];
$user = json_decode(file_get_contents($graph_url));
$username = $user->username;
$email = $user->email;
$facebook_id = $user->id;
// check if user in db => login
$result = mysql_query("select * from `daftarfb` where `facebook_id`='$facebook_id'");
if (mysql_num_rows($result) == 1)
{
$usr = mysql_fetch_array($result);
$_SESSION['username'] = $usr['username'];
$_SESSION['uid'] = $usr['id'];
$_SESSION['facebook_id'] = $_usr['facebook_id'];
$_SESSION['access_token'] = $params['access_token'];
?>
<script>
top.location.href='home.php'
</script>
<?php
}
else // if user not in db
{
$join_date = date('Y-m-d h:i:s');
$query = mysql_query("INSERT INTO `daftarfb` (username, email, facebook_id, join_date)
VALUES ('$username', '$email', '$facebook_id', '$join_date')");
$_SESSION['uid'] = mysql_insert_id();
$_SESSION['username'] = $username;
$_SESSION['access_token'] = $params['access_token'];
$_SESSION['facebook_id'] = $_usr['facebook_id'];
?>
<script>
top.location.href='welcome.php'
</script>
<?php
}
}
else {
echo("The state does not match. You may be a victim of CSRF.");
}
?>
- (merah) pada bagian ini, proses penandaan terjadi
$app_id = "123611xxxx59948";
$app_secret = "5e07e5b1875695xxxxx04bbe520b25b";
$my_url = "http://i.carahipnotis.net/pendaftaranfb/facebook_auth.php";
juga proses penangkapan data yang di berikan facebook
$code = $_GET['code'];
- (hijau) untuk pengambilan data-data dari facebook di perlukan akses token akses token itu sendiri sudah dikirmkan kodenya oleh facebook dan akan kit gunakan untuk meminta data seperti $username = $user->username; $email = $user->email;
$facebook_id = $user->id;
- (biru) nah saat terjadi pengembalian halaman dari facebook, facebook akan mengirim data-data seperti id si pengguna, dengan fungsi ini si pengguna akan di chek kembali keberadaannya apakah sudah pernah login atau belum bila saat di chek user id si pengguna belum pernah terdaftar maka terjadi penyimpanan data ke database
$join_date = date('Y-m-d h:i:s'); $query = mysql_query("INSERT INTO `daftarfb` (username, email, facebook_id, join_date)
VALUES ('$username', '$email', '$facebook_id', '$join_date')");
dan pembuatan session$_SESSION['uid'] = mysql_insert_id();
$_SESSION['username'] = $username;
$_SESSION['access_token'] = $params['access_token'];
$_SESSION['facebook_id'] = $_usr['facebook_id'];
baru pengguna di arahkan ke halaman welcome.php
<script>
top.location.href='welcome.php'
</script>
<?php
nnnn - (biru) pada warna biru hanya mengechek id nya saja dan tinggal membuat sesion pada setiap data yang di perlukan
pada kondisi ini si pengguna akan langsung diarahkan ke home.phh
No comments:
Post a Comment