Meus sites


Sites relevantes


Contato

Email: devanon.kyosha@gmail.com

Try scrolling the rest of the page to see this option in action.

Sejam bem vindos

Fabrício Web Home Page

Desenvolvimento PHP Laravel, Manutenção em sites PHP, Arquitetura de serviços Web, Geração de endpoints REST API e Tutoriais.

Sejam bem vindos à página Fabrício Web. Eu sou o Fabrício Dias.
Passarei aqui uma parte significativa de minha experiência. Acompanhe minhas publicações. Vou publicar amenidades nerds também. O site está em desenvolvimento, e vou colocar melhorias ainda. E com certeza vou adicionar interação com o leitor em breve.

Fabrício Dias de Oliveira

Laravel - Autenticação através do Google

A autententicação é um processo necessário em uma aplicação. E fica melhor ainda quando diferentes aplicações fazem a autenticação por uma única lista de usuários, com todos os seus dados centralizados em um único lugar. o Google disponibiliza isso, e nos permite usar seus dados para fazer cadastros automáticos de usuários em nosso sistema.

Instale o plugin Socialite - documentação aqui https://laravel.com/docs/5.6/socialite.

composer require laravel/socialite "^3.2.0"

Configure o arquivo config/services.php e insira estas variáves, exatamente como está escrito.

'google' => [
'client_id' => env('GOOGLE_CLIENT_ID'),
'client_secret' => env('GOOGLE_CLIENT_SECRET'),
'redirect' => env('GOOGLE_REDIRECT')
],

Configure o provedor de serviço em config/app.php e adicione a classe do Socialite.

Laravel\Socialite\SocialiteServiceProvider::class,

E ainda no config/app.php no final do arquivo, adicione o aliase do Socialite.

'aliases' => [
// ...
'Socialite' => Laravel\Socialite\Facades\Socialite::class,
]

E crie o esqueleto padrão para autenticação do Laravel.

php artisan make:auth

No Google, crie um projeto em https://console.cloud.google.com/projectcreate e configure as credenciais do projeto em https://console.developers.google.com/apis/credentials.

Clique no nome do projeto para configurá-lo. Na configuração, pegue os identificadores dele ID do cliente e Chave secreta do cliente. E configure a URI de direcionamento. Adicione http://localhost:8000/callback e http://localhost:8000/redirect - as URI devem permanecer na configuração para eventual manutenção, e as URLs de produção serão adicionadas à lista posteriormente. No fim do projeto, serão 4 URLs na lista.

No arquivo .env, configure as variáveis que foram colocadas em config/services.php.

GOOGLE_CLIENT_ID=000000000000-XXXXXXXXXXX.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=XXXXXXXXXXXXX
GOOGLE_REDIRECT=http://localhost:8000/callback

Habilite o login do G+ em https://console.cloud.google.com/apis/api/plus.googleapis.com/overview. O G+ foi descontinuado pelo Google, mas esta versão do Socialite exige este passo. Versões mais atuais dispensam isso.

Adicione as rotas da autenticação.

Route::get('/redirect', 'Auth\LoginController@redirectToProvider');
Route::get('/callback', 'Auth\LoginController@handleProviderCallback');

Agora edite app/http/controllers/Auth/LoginController.php, adicione nas cláusulas use.

use App\User;
use Illuminate\Support\Facades\Auth;
use Laravel\Socialite\Facades\Socialite;

E os métodos:

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

/**
* Obtain the user information from Google.
*
* @return \Illuminate\Http\Response
*/

public function handleProviderCallback() {
    try {
        $user = Socialite::driver('google')->stateless()->user();
    } catch (\Exception $e) {
        return redirect('/login');
    } // check if they're an existing user
    $existingUser = User::where('email', $user->email)->first();
    if ($existingUser) {
        // log them in
        Auth::login($existingUser);
    } else {
        // create a new user
        $userStore = new User();
        $newUser = [
            'name' => $user->name,
            'email' => $user->email,
            'google_id' => $user->id,
            'avatar' => $user->avatar,
            'avatar_original' => $user->avatar_original,
        ];
        $userStore->store($newUser);
        $existingUser = User::where('email', $user->email)->first();
        Auth::login($existingUser);
    }
    return redirect()->to('/home');
}

 

Edite app/user.php. Adicione o método.

public function store(array $options = [])

{

User::query()->insert($options);

}

Atualize a tabela de migração da tabela user, apague todos os campos e coloque estes.

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

E por fim, execute php artisan migrate.

O plugin Socialite pode logar em qualquer uma das redes sociais, basta fazer a configuração correta.

Fabrício Dias de Oliveira

Procurar artigos