BotAuth - login e registro usando bots



BotAuth - um pacote que permite fazer login usando o bot Vkontakte, FaceBook, Telegram.

O principal objetivo do BotAuth é simplificar os visitantes dos sites / login do PWA através das redes sociais.

Enquanto social. As redes não fornecem feedback de aplicativos móveis nativos para um site; os desenvolvedores precisam enviar um usuário para um navegador, onde precisam digitar seu login e senha novamente.

Usando bots, você pode obter feedback (retorno de chamada) do aplicativo nativo, sem forçar a digitação do nome de usuário e senha do social. rede no navegador.

Demo - https://laravel.zetrider.ru/botauth
GitHub - https://github.com/zetrider/BotAuth

Links do formulário:

https://vk.me/ https://t.me/ https://m.me/ 

abra um aplicativo móvel para iniciar um diálogo com o bot. O visitante não precisará digitar novamente o nome de usuário e a senha no navegador.

Você pode conectar bots:

  • Vkontakte
  • Telegram
  • Facebook
  • Seu próprio provedor (exemplo abaixo)

Instalação
  1. compositor requer zetrider / botauth
  2. Conecte o pacote em config / app.php
    Fornecedor
     ZetRider\BotAuth\BotAuthServiceProvider::class, 

    Fachada
     'BotAuth' => ZetRider\BotAuth\Facades\BotAuth::class, 

  3. Copie a configuração. arquivo
     php artisan vendor:publish --tag=botauth-config 

    se necessário
     php artisan vendor:publish --tag=botauth-views 

     php artisan vendor:publish --tag=botauth-migrations 

  4. Indique para o social necessário. link de redes em config / botauth.php no parâmetro link.
  5. Preencher arquivo ENV com chaves bot
     BOTAUTH_VKONTAKTE_API_SECRET BOTAUTH_VKONTAKTE_API_TOKEN BOTAUTH_VKONTAKTE_API_CONFIRM BOTAUTH_TELEGRAM_API_TOKEN BOTAUTH_TELEGRAM_PROXY BOTAUTH_FACEBOOK_API_SECRET BOTAUTH_FACEBOOK_API_TOKEN BOTAUTH_FACEBOOK_API_CONFIRM 

  6. Executar migrações
     php artisan migrate 

  7. No Middleware VerifyCsrfToken, adicione uma exceção de endereço para retorno de chamada, o padrão é botauth / callback / * '
     protected $except = [ 'botauth/callback/*' // Except callback Csrf middleware ]; 

  8. Para o seu modelo de usuário, adicione uma característica:
     use ZetRider\BotAuth\Traits\BotAuthUserTrait; 

    que adicionará um relacionamento com os logins de usuário do social. redes


Conexão de bots:

Vkontakte
  1. Abra as configurações da sua comunidade ou crie um novo vk.com/groups?w=groups_create
  2. Nas configurações da comunidade, abra a seção "Configurações" - "Trabalhar com a API"
  3. Crie uma senha, selecione "Permitir que o aplicativo acesse mensagens da comunidade", anote a chave, ela deve ser especificada em .env BOTAUTH_VKONTAKTE_API_TOKEN
  4. Na mesma página, selecione a API de retorno de chamada, selecione "Versão da API" 5.95 , especifique o endereço de retorno de chamada do seu site no campo "Endereço", exemplo padrão
     https://DOMAIN/botauth/callback/vkontakte 
  5. Abaixo especifique a linha que o servidor deve retornar para .env BOTAUTH_VKONTAKTE_API_CONFIRM
  6. No campo "Chave secreta", insira qualquer chave secreta, especifique em .env BOTAUTH_VKONTAKTE_API_SECRET
  7. Depois de preencher todas as chaves em .env, clique no botão "Confirmar"
  8. Na mesma página, abra a guia "Tipos de eventos", selecione "Caixa de entrada"
  9. Abra as configurações da comunidade, o item "Mensagens", ative as "mensagens da comunidade"
  10. Abra as configurações da comunidade, o item "Mensagens" - "Configurações do bot", ative "Recursos do bot"

O bot está pronto para ir.

Um exemplo de um link direto para um diálogo com um bot
 https://vk.me/zetcode 


Telegram
  1. Crie seu bot via @BotFather
  2. Lembre-se da chave, especifique em .env BOTAUTH_TELEGRAM_API_TOKEN
  3. Adicione um gancho da web via
     https://api.telegram.org/botYOUR_TOKEN/setWebhook?url=https://DOMAIN/botauth/callback/telegram 

    substitua YOUR_TOKEN pelo seu token, DOMAIN pelo seu domínio
  4. Se necessário, especifique o proxy em .env BOTAUTH_TELEGRAM_PROXY , por exemplo socks5h: //127.0.0.1: 1080

O bot está pronto para ir.

Um exemplo de um link direto para um diálogo com um bot
 https://t.me/BotAuthBot 


Facebook
  1. Você deve ter criado uma página, caso contrário, adicione www.facebook.com/pages/creation/?ref_type=universal_creation_hub
  2. Adicione o novo aplicativo developers.facebook.com/apps
  3. Nas configurações do aplicativo, selecione "Básico", copie o "Segredo do aplicativo" para .env BOTAUTH_FACEBOOK_API_SECRET
  4. Nas configurações do aplicativo, você precisa adicionar o produto "Messenger"
  5. Nas configurações do produto "Messenger", crie um token de acesso, especifique-o em .env BOTAUTH_FACEBOOK_API_TOKEN
  6. Nas configurações do produto Messenger, crie um gancho da web, especifique no URL de retorno de chamada
     https://DOMAIN/botauth/callback/facebook 
    substitua DOMAIN pelo seu domínio
  7. No campo "Confirmar marcador", especifique qualquer texto, salve-o em .env BOTAUTH_FACEBOOK_API_CONFIRM
  8. Nas opções "Campos de inscrição", selecione "mensagens"
  9. Clique em Confirmar
  10. Após confirmar o servidor nas configurações do gancho da web, selecione a página, clique em "Inscrever-se"
  11. Na janela "Check Messenger Application", ao lado de "pages_messaging", clique em "Add to Request"

O bot já está pronto para o trabalho, mas está disponível apenas para administradores.

Depois de confirmar o aplicativo, ele ficará disponível para todos os visitantes. Envie o pedido de moderação.

Um exemplo de um link direto para um diálogo com um bot
 https://m.me/zetridercode 


Importante:

  1. O site deve funcionar em https
  2. O bot do Facebook retorna um PSID que não corresponde ao ID do usuário público.
  3. Por padrão, o controlador bot funciona com o modelo \ App \ User. Se você tiver um caso diferente, basta criar seu controlador e modelo com base nos exemplos do repositório. Modelo , Controlador

Como adicionar seu provedor:

Crie sua classe que herda uma classe abstrata

 ZetRider\BotAuth\AbstractProvider 

Exemplo de exemplo / ExampleProvider.php

Adicione um provedor ao serviço, por exemplo, AppServiceProvider no método de inicialização

 // Register example proider BotAuth::extend('example', function() { return new \Path\To\Your\Class\ExampleProvider(); }); 

O provedor processará solicitações em um retorno de chamada em

 https://.../botauth/callback/example 

Eventos

Evento no processamento bem-sucedido de uma nova mensagem do bot

 // Catch bot callback \Event::listen(\ZetRider\BotAuth\Events\MessageNewEvent::class, function($event) { $provider = $event->provider; // ZetRider\BotAuth\AbstractProvider $slug = $provider->getProviderSlug(); $data = $provider->getCallbackResponse(); $user = $provider->getUser(); $text = $provider->getText(); // You can send a message // $provider->sendMessage(__('Back to web site')); }); 

Source: https://habr.com/ru/post/pt455104/


All Articles