OAUTH2 LARAVEL
 Creacion de Proyecto
> composer create-project --prefer-dist laravel/laravel Passport

Levantar servidor local
> php -S localhost:80 -t ./public

Ubicar la carpeta config/app.php y en la sección “providers” agregar “Laravel\Passport\PassportServiceProvider::class”
    'providers' => [
        /*
         * Laravel Framework Service Providers...
         */
        Illuminate\Auth\AuthServiceProvider::class,
        Illuminate\Broadcasting\BroadcastServiceProvider::class,
        Illuminate\Bus\BusServiceProvider::class,
        Illuminate\Cache\CacheServiceProvider::class,
        Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class,
        Illuminate\Cookie\CookieServiceProvider::class,
        Illuminate\Database\DatabaseServiceProvider::class,
        Illuminate\Encryption\EncryptionServiceProvider::class,
        Illuminate\Filesystem\FilesystemServiceProvider::class,
        Illuminate\Foundation\Providers\FoundationServiceProvider::class,
        Illuminate\Hashing\HashServiceProvider::class,
        Illuminate\Mail\MailServiceProvider::class,
        Illuminate\Notifications\NotificationServiceProvider::class,
        Illuminate\Pagination\PaginationServiceProvider::class,
        Illuminate\Pipeline\PipelineServiceProvider::class,
        Illuminate\Queue\QueueServiceProvider::class,
        Illuminate\Redis\RedisServiceProvider::class,
        Illuminate\Auth\Passwords\PasswordResetServiceProvider::class,
        Illuminate\Session\SessionServiceProvider::class,
        Illuminate\Translation\TranslationServiceProvider::class,
        Illuminate\Validation\ValidationServiceProvider::class,
        Illuminate\View\ViewServiceProvider::class,
        Laravel\Passport\PassportServiceProvider::class,
 
Luego en la consola ejecutar
> composer require laravel/Passport
Configurar el archivo .env
DB_DATABASE=passport
DB_USERNAME=root
DB_PASSWORD=

Ejecutar en la consola
> php artisan migrate
 
Si lanza un error, ubicar el archivo app/Providers/AppServiceProvider.php y adicionar:
* use Illuminate\Support\Facades\Schema;
* Schema::defaultStringLength(191);
 
<?php
 
namespace App\Providers;
 
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Schema;
 
class AppServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }
 
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        Schema::defaultStringLength(191);
    }
}
 
Nos dirigimos a app/User.php y adicionamos:
* use Laravel\Passport\HasApiTokens;
* use HasApiTokens, Notifiable;
 
<?php
 
namespace App;
 
use Laravel\Passport\HasApiTokens;
 
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
 
class User extends Authenticatable
{
    use HasApiTokensNotifiable;
 
    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    
}
 
 
Nos dirigimos a app/Providers/ AuthServiceProvider.php y agregamos:
* use Laravel\Passport\Passport;
 
<?php
 
namespace App\Providers;
use Laravel\Passport\Passport;
 
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Gate;
 
class AuthServiceProvider extends ServiceProvider
{
    
}
 
 
Ahora nos dirigimos a config\auth.php y modificamos:
'api' => [
            'driver' => 'passport',
            'provider' => 'users',
            'hash' => false,
        ],
 
'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],
 
        'api' => [
            'driver' => 'passport',
            'provider' => 'users',
            'hash' => false,
        ],
    ],
 
Luego en la consola ejecutar (solo en caso de querer interfaces de login):
> php artisan make:auth
 
Luego ejecutar en la consola para crear las llaves:
$ php artisan passport:install
 
Encryption keys generated successfully.
Personal access client created successfully.
Client ID: 1
Client secret: UBZlgkptMJQa4qwNQQdUOMD0Vq647GmlK1zxKAjj
Password grant client created successfully.
Client ID: 2
Client secret: ZlCFY4hTKxLQFJieXKSJOylF7wzi8kwIBAhWSCAD
 
Ahora registraremos las rutas de Passport en app/Providers/AuthServiceProvider.php:
Passport::routes();
<?php
 
namespace App\Providers;
use Laravel\Passport\Passport;
 
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Gate;
 
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();
    }
}
 
 
Para ver la lista de rutas que se han generado, ejecutamos en la consola:
$ php artisan route:list
 
Crearemos un archivo en app/resources/views/client.blade.php
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Clientes</title>
</head>
<body>
    <form action="{{url('/oauth/clients')}}" method="POST">
        <p>
            <input type="text" name="name" />
        </p>
        <p>
            <input type="text" name="redirect" />
        </p>
        <p>
            <input type="submit" name="send" value="Enviar">
        </p>
        {{csrf_field()}}
    </form>
</body>
</html>
 
Ahora agregar una ruta en routes/web.php para acceder a nuestra vista.
Route::get('/client'function () {
    return view('client');
})->middleware('auth');