• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar

GhazaliTajuddin.com

Another Kuantan Blogger

  • Home
  • Blog
    • Kuantan
    • Foods
    • Technology
    • Health
  • Stock Photography
    • Senarai Microstock Agency
    • Membuka akaun contributor Shutterstock.com
    • Tips untuk 10 keping gambar pertama Shutterstock.com
    • Mengapa Shutterstock.com reject gambar / submission
    • Model Release
    • Bagaimana withdraw earning daripada Fotolia
    • Bagaimana untuk mengisi keyword kepada imej dengan menggunakan Adobe Photoshop
You are here: Home / General / Laravel Login Melalui Facebook Menggunakan Socialite

Laravel Login Melalui Facebook Menggunakan Socialite

April 17, 2016 by ghazalitajuddin Leave a Comment

Selain facebook, Socialite juga support

  • Facebook
  • Github
  • Google
  • Twitter
  • Bitbucket

INSTALL SOCIALITE

Pertama install socialite

composer require laravel/socialite

atau lagkah alternatif, edit file composer.json, tambah pada require section

"laravel/socialite~2.0"

dan jangan lupa run composer update.

EDIT CONFIG/APP.PHP

Edit config/app.php, tambah code berikut pada bahagian array provider

Laravel\Socialite\SocialiteServiceProvider::class,

Tambah Socialide facade pada bahagian array aliases

'Socialite'=> Laravel\Socialite\Facades\Socialite::class,

CREATE FACEBOOK APP

Daftar app baru di https://developers.facebook.com.

Dapatkan

  • API ID
  • API SECRET

EDIT CONFIG/SERVICE.PHP

Tambah code berikut

'facebook' => [
'client_id' =>'yourFacebookAppID',
'client_secret' =>'yourFacebookAppSecret',
'redirect' =>'http://yourLaravelAppURL/login/facebook/callback',
],

EDIT FAIL .ENV

'facebook' =[
'client_id' =>env('FACEBOOK_ID'),
'client_secret' =>env('FACEBOOK_SECRET'),
'redirect' =>env('FACEBOOK_URL'),
],

CREATE/UPDATE TABLE USER

Untuk create table biasanya akan guna migration.

Biasanya untuk fresh installation dah ada migration create_users_table.

Cuma kena update sikit utk masukkan facebook unique id.

Edit database/migrations/timestamps_create_users_table.php

public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('facebook_id')->unique();
$table->string('name');
$table->string('email')->unique();
$table->string('password', 60);
$table->rememberToken();
$table->timestamps();
});
}

Untuk create table run command berikut

php artisan migrate

Kalau table user korang dah exist lain citer.

Kena create migration update_user_table.

Run command berikut, utk hasilkan migration table

php artisan make:migration update_users_table

edit database/migrations/timestamps_update_users_table.php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class UpdateUsersTable extends Migration
{
8 public function up(){
if(Schema::hasColumn('users', 'facebook_id')) {

} else {
Schema::table('users', function ($table) {
$table->string('facebook_id')->unique();
});
}
}

public function down()
{
Schema::table('users', function ($table) {
$table->dropColumn('facebook_id');
});
}
}

UPDATE APP/USER.PHP

protected $fillable = [
'name', 'email', 'password', 'facebook_id',
];

UPDATE ROUTE

Route::get('login/facebook', 'Auth\AuthController@redirectToFacebook');
Route::get('login/facebook/callback', 'Auth\AuthController@getFacebookCallback');

Route ini akan membawa (redirectToFacebook) kita ke facebook untuk login, dan kembali(getFacebookCallback) ke page pada host kita.

EDIT Auth/AuthController

Tambah method

  • redirectToFacebook()
  • getFacebookCallback()
public function redirectToFacebook()
{
return Socialite::with('facebook')->redirect();
}

public function getFacebookCallback()
{

$data = Socialite::with('facebook')->user();
$user = User::where('email', $data->email)->first();

if(!is_null($user)) {
Auth::login($user);
$user->name = $data->user['first_name'].' '.$data->user['last_name'];
$user->facebook_id = $data->id;
$user->save();
} else {
$user = User::where('facebook_id', $data->id)->first();
if(is_null($user)){
// Create a new user
$user = new User();
//$user->name = $data->user['first_name'].' '.$data->user['last_name'];
$user->name = $data->user['name'];
$user->facebook_id = $data->id;
$user->email = $data->email;
$user->save();
}

Auth::login($user);

}

return redirect('/')->with('success', 'Successfully logged in!');
}

Disebabkan class ini menggunakan Socialite dan Auth, sila tambah di atas class AuthController.

use Socialite;
use Auth;

VISIT

Cuba visit http://cookbook.app/login/facebook

Kita akan dibawa ke page login FB, jika tiada masalah kita akan diredirect ke web kita semula.

EDIT HOMEPAGE VIEW

@extends('master')
@section('title', 'Home')

@section('content')
<div class="container">
<div class="content">
	@if(!Auth::check())
	<div class="quote">Our Home page!</div>
	@else
	<div class="quote">You are now logged in!</div>
	@endif</div>
</div>
@endsection

Fungsi Auth::check() adalah untuk semak sama ada kita mempunyai access di Facebook atau tidak.

Edit Route.php

Untuk menggunakan Session dalam Laravel 5.2 perlu letakkan route dalam group web middleware seperti berikut

<?php

/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It's a breeze. Simply tell Laravel the URIs it should respond to
| and give it the controller to call when that URI is requested.
|
*/

//Route::get('/', function () {return view('home');


Route::group(['middleware' => ['web']], function () {

Route::get('/','PagesController@home');
Route::get('/about','PagesController@about');
Route::get('/contact','PagesController@contact');
Route::get('/test','PagesController@test');

	
Route::get('login/facebook', 'Auth\AuthController@redirectToFacebook');
Route::get('login/facebook/callback', 'Auth\AuthController@getFacebookCallback');

});


 

Filed Under: General

Reader Interactions

Leave a Reply Cancel reply

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

Primary Sidebar

“Solat. Sabar. Syukur. Senyum. Sedekah.”

For Collaboration, Events & Review, kindly contact me at +6016[-]9212092 or click Whatsapp button on this page.

Sponsor

Recent Posts

BadMethodCallException Method Illuminate\Database\Eloquent\Collection::roles does not exist.

User Roles And Permissions Without Package Laravel 10

Laravel Many To Many Relationship

Makan malam bersama keluarga di Awangan Palace

Sarapan pagi di Warung Gulai Kawah

Recent Comments

  • helmi on Personal Tips Berhenti Merokok
  • ghazalitajuddin on Personal Tips Berhenti Merokok
  • helmi on Personal Tips Berhenti Merokok
  • ghazalitajuddin on Nasi Lemak Kukus Restoran Zaman. Otai masih berbisa.
  • ghazalitajuddin on Air tangki radiator Proton Exora cepat kering? Cuba tukar penutup radiator!
  • Mal on Nasi Lemak Kukus Restoran Zaman. Otai masih berbisa.
  • Firdaus on Air tangki radiator Proton Exora cepat kering? Cuba tukar penutup radiator!

My Link

  • Takaful Insurance Web

JJCM

Diet snack untuk abang-abang kacak

Breakfast di De Aisyah Kuantan

Rojak Pak Lah Taman Gelora

Sarapan pagi di Warung Gulai Kawah

Makan malam bersama keluarga di Awangan Palace

Tags

bebas rokok berhenti merokok breakfast Controller Framework Gezzeg Photography & Design health jalan-jalan cari makan jalan-jalan cari makan kuantan jjcm jjcm kuantan Jurufoto Kuantan Kuantan Kuantan Photographer kuantan programmer kuantan web developer kuantan webmaster laravel merokok merbahayakan kesihatan model MVC nikmat rokok OOP Pahang Pahangtourism pahang tourism Photo Manipulation PHP rajalanun retired smoking revisit pahang 2018 shutterstock stop smoking stop smoking tips stop smoking withdrawal symptom tips tips berhenti merokok View visit malaysia 2020 visit pahang visitpahang white wordpress yii Yii Framework

Recent Posts

  • BadMethodCallException Method Illuminate\Database\Eloquent\Collection::roles does not exist.
  • User Roles And Permissions Without Package Laravel 10
  • Laravel Many To Many Relationship
  • Makan malam bersama keluarga di Awangan Palace
  • Sarapan pagi di Warung Gulai Kawah

Copyright © 2025 — Ghazali Tajuddin • All rights reserved. •