Jumat, 30 September 2016

Membuat Login dan Pendaftaran Dengan Facebook Menggunakan Laravel

Membuat login atau pendaftaran dengan menggunakan facebook auth pada laravel sangat lah mudah karena paket yang sudah disediakan oleh laravel yaitu paket laravel/socialite yang pada catatan kali ini akan kita gunakan, bagaimana cara menggunakannya ikuti catatan berikut ini.

1) Buat facebook app di https://developers.facebook.com/apps



kemudian tambahkan product yaitu Facebook Login

pada Valid OAuth redirect URIs masukan

http://domainanda.com/auth/facebook

lalu SAVE

2) Tambahkan Route pada aplikasi laravel anda yaitu.

//auth facebook
Route::get('auth/facebook', 'Auth\AuthController@redirectToProvider');
Route::get('auth/facebook/callback', 'Auth\AuthController@handleProviderCallback');

3) Tambahkan pada file composer.json yaitu.

"laravel/socialite": "^2.0"

kemudian ketik pada shell.

composer update

4) pada config/app.php tabhakan provider

Laravel\Socialite\SocialiteServiceProvider::class,

dan pada alias

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

5) Dan pada authController tambahkan kode seperti berikut.

public function redirectToProvider()
    {
        return Socialite::driver('facebook')->redirect();
    }


    public function handleProviderCallback()
    {
        try {
            $user = Socialite::driver('facebook')->user();
        } catch (Exception $e) {
            return redirect('auth/facebook');
        }


            $authUser = $this->findOrCreateUser($user);

            Auth::login($authUser, true);

            return Redirect::to('/');
    }


    private function findOrCreateUser($facebookUser)
    {
        $authUser = User::where('facebook_id', $facebookUser->id)->first();

        if ($authUser){
            return $authUser;
        }

        if($facebookUser->getEmail())
        {
          $email = $facebookUser->getEmail();
        } else {
          $email = $facebookUser->getId() . '@facebook.com';
        }
        $username = $facebookUser->getId() . str_random(5);

        return User::create([
            'name' => $facebookUser->getName(),
            'email' => $email,
            'username' => $username,
            'facebook_id' => $facebookUser->getId(),
            'foto' => $facebookUser->getAvatar()
        ]);
    }

6) Lalu pada config/service.php tambahkan kode berikut ini.

'facebook' => [
    'client_id' => env('FACEBOOK_CLIENT_ID'),
    'client_secret' => env('FACEBOOK_CLIENT_SECRET'),
    'redirect' => env('FACEBOOK_CALLBACK_URL'),
    ],

Tidak ada komentar:

Posting Komentar