Skip to content

Laravel Api Integration & Configuration

Recently I have worked on two Laravel mobile applications in my freelancing work and both are having android applications. So for the API authentication, I have used the Laravel Passport package. It’s very easy to authenticate each and every API using bearer token so I thought I have to create a new article on Laravel API integration & configuration which might be helpful for the new beginners who just started learning Laravel & Passport.

api integration

In this article, we are going to set up and configure Passport in fresh Laravel 6 application so please stick with the steps and later on we will build API with authentication in the next article.

Subscribe to Blog via Email

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

Step 1:

Install the latest version of Laravel using the below commands.

composer create-project laravel/laravel passport

Step 2:

After installing Laravel go to your project directory and install laravel/ui package to setup all routes and views for the authentication purpose.

composer require laravel/ui --dev
 
php artisan ui vue --auth

npm install && npm run dev

Step 3:

Create a new database and set up a connection in your .env file.

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=passport
DB_USERNAME=root
DB_PASSWORD=

Step 4:

Now install the Passport package in our Laravel application.

composer require laravel/passport

Once your installation completed, you have to set up a few things in your config/app.php file.

'providers' => [

    Laravel\Passport\PassportServiceProvider::class,
    
],

Few updates still required on below flies so please update accordingly.

  • app/User.php
  • app/Providers/AuthServiceProvider.php
  • config/auth.php

config/auth.php

<?php

namespace App;

use Laravel\Passport\HasApiTokens;
use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    use HasApiTokens, Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'password',
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];

    /**
     * The attributes that should be cast to native types.
     *
     * @var array
     */
    protected $casts = [
        'email_verified_at' => 'datetime',
    ];
}

app/Providers/AuthServiceProvider.php

<?php

namespace App\Providers;

use Laravel\Passport\Passport;
use Illuminate\Support\Facades\Gate;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;

class AuthServiceProvider extends ServiceProvider
{
    /**
     * The policy mappings for the application.
     *
     * @var array
     */
    protected $policies = [
        // 'App\Model' => 'App\Policies\ModelPolicy',
    ];

    /**
     * Register any authentication / authorization services.
     *
     * @return void
     */
    public function boot()
    {
        $this->registerPolicies();

        Passport::routes();
    }
}

config/auth.php

...

/*
|--------------------------------------------------------------------------
| Authentication Guards
|--------------------------------------------------------------------------
|
| Next, you may define every authentication guard for your application.
| Of course, a great default configuration has been defined for you
| here which uses session storage and the Eloquent user provider.
|
| All authentication drivers have a user provider. This defines how the
| users are actually retrieved out of your database or other storage
| mechanisms used by this application to persist your user's data.
|
| Supported: "session", "token"
|
*/

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

    'api' => [
        'driver' => 'passport',
        'provider' => 'users',
        'hash' => false,
    ],
],

...

Step 4:

Generate tables using migration command.

php artisan migrate

If you are geeting error like “SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table `users` add unique `u sers_email_unique`(`email`))” during migrate, refer this article: http://bit.ly/2JiCIVO

Step 5:

Generate passport token keys for the security.

php artisan passport:install --force

That’s it. You have successfully configured a Passport in your Laravel application.

Please visit my next blog post which is related to this article where you can learn on Laravel passport create API for your application.

Keep visiting for new stuff and give your feedback.

Happy Coding 😉

(Visited 3 times, 1 visits today)
%d bloggers like this: