zetrider/botauth

authentication by bot


Keywords
facebook, auth, bot, laravel, vkontakte, vk, telegram
License
MIT

Documentation

BotAuth - Π²Ρ…ΠΎΠ΄ ΠΈ рСгистрация ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π±ΠΎΡ‚ΠΎΠ²

ΠŸΠ°ΠΊΠ΅Ρ‚ позволяСт Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π±ΠΎΡ‚ΠΎΠ² Π² соц. сСтях. Основная Π·Π°Π΄Π°Ρ‡Π° ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ устройства для Π²Ρ…ΠΎΠ΄Π° Π½Π° сайт Ρ‡Π΅Ρ€Π΅Π· соц. ΡΠ΅Ρ‚ΡŒ.

Бсылки Π²ΠΈΠ΄Π°:

ΠΎΡ‚ΠΊΡ€ΠΎΡŽΡ‚ мобильноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для Π½Π°Ρ‡Π°Π»Π° Π΄ΠΈΠ°Π»ΠΎΠ³Π° с Π±ΠΎΡ‚ΠΎΠΌ. ΠŸΠΎΡΠ΅Ρ‚ΠΈΡ‚Π΅Π»ΡŽ Π½Π΅ придСтся ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π»ΠΎΠ³ΠΈΠ½ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π±ΠΎΡ‚ΠΎΠ²:

  • Π’ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅
  • Telegram
  • FaceBook
  • Π’Π°Ρˆ собствСнный ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ (ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½ΠΈΠΆΠ΅)

Demo https://laravel.zetrider.ru/


Установка:

  1. composer require zetrider/botauth

  2. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ Π² config/app.php

    • ΠŸΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ ZetRider\BotAuth\BotAuthServiceProvider::class,
    • Ѐасад (Алиса)

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

  3. Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³. Ρ„Π°ΠΉΠ»

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

    ΠΏΡ€ΠΈ нСобходимости

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

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

  4. Π£ΠΊΠ°Π·Π°Ρ‚ΡŒ для Π½ΡƒΠΆΠ½Ρ‹Ρ… соц. сСтСй ссылку Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ link.

  5. Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ENV Ρ„Π°ΠΉΠ» ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ Π±ΠΎΡ‚ΠΎΠ² 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. Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ php artisan migrate

  7. Π’ Middleware VerifyCsrfToken Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ адрСса для callback, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ botauth/callback/*'

protected $except = [
    'botauth/callback/*' // Except callback Csrf middleware
];
  1. Для вашСй ΠΌΠΎΠ΄Π΅Π»ΠΈ User Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Ρ‚Ρ€Π΅ΠΉΡ‚: use ZetRider\BotAuth\Traits\BotAuthUserTrait; ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ с Π»ΠΎΠ³ΠΈΠ½Π°ΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈΠ· соц. сСтСй

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π±ΠΎΡ‚ΠΎΠ²:

Π’ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅

  1. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ настройки своСго сообщСства ΠΈΠ»ΠΈ создайтС Π½ΠΎΠ²ΠΎΠ΅ https://vk.com/groups?w=groups_create
  2. Π’ настройках сообщСства ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ€Π°ΠΉΠ·Π΄Π΅Π» "Настройки" - "Π Π°Π±ΠΎΡ‚Π° с API"
  3. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΊΠ»ΡŽΡ‡ доступа, Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΡƒΠ½ΠΊΡ‚ "Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ доступ ΠΊ сообщСниям сообщСства", Π·Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΊΠ»ΡŽΡ‡, Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π² .env BOTAUTH_VKONTAKTE_API_TOKEN
  4. На Ρ‚ΠΎΠΉ ΠΆΠ΅ страницС Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Callback API, Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ "ВСрсия API" 5.95, ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Π² ΠΏΠΎΠ»Π΅ "АдрСс" callback адрСс вашСго сайта, ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ https://DOMAIN/botauth/callback/vkontakte
  5. НиТС ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ строку, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ сСрвСр Π² .env BOTAUTH_VKONTAKTE_API_CONFIRM
  6. Π’ ΠΏΠΎΠ»Π΅ "Π‘Π΅ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡" ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ любой сСкрСтный ΠΊΠ»ΡŽΡ‡, ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Π² .env BOTAUTH_VKONTAKTE_API_SECRET
  7. ПослС заполнСния всСх ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π² .env Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ "ΠŸΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΈΠ΄Ρ‚ΡŒ"
  8. На этой ΠΆΠ΅ страницС ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π²ΠΊΠ»Π°Π΄ΠΊΡƒ "Π’ΠΈΠΏΡ‹ событий", Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ "ВходящиС сообщСния"
  9. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ натсройки сообщСства, ΠΏΡƒΠ½ΠΊΡ‚ "БообщСния", Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ "сообщСния сообщСства"
  10. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ настройки сообщСства, ΠΏΡƒΠ½ΠΊΡ‚ "БообщСния" - "Настройки для Π±ΠΎΡ‚Π°", Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ "ВозмоТности Π±ΠΎΡ‚ΠΎΠ²"

Π‘ΠΎΡ‚ Π³ΠΎΡ‚ΠΎΠ² ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ прямой ссылки Π½Π° Π΄ΠΈΠ°Π»ΠΎΠ³ с Π±ΠΎΡ‚ΠΎΠΌ https://vk.me/zetcode

Telegram

  1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ своСго Π±ΠΎΡ‚Π° Ρ‡Π΅Ρ€Π΅Π· @BotFather
  2. Π—Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅ ΠΊΠ»ΡŽΡ‡, ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Π² .env BOTAUTH_TELEGRAM_API_TOKEN
  3. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π²Π΅Π± Ρ…ΡƒΠΊ Ρ‡Π΅Ρ€Π΅Π· https://api.telegram.org/botYOUR_TOKEN/setWebhook?url=https://DOMAIN/botauth/callback/telegram Π³Π΄Π΅ YOUR_TOKEN ваш Ρ‚ΠΎΠΊΠ΅Π½.
  4. ΠŸΡ€ΠΈ нСобходимости ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ прокси Π² .env BOTAUTH_TELEGRAM_PROXY, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ socks5h://127.0.0.1:1080

Π‘ΠΎΡ‚ Π³ΠΎΡ‚ΠΎΠ² ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ прямой ссылки Π½Π° Π΄ΠΈΠ°Π»ΠΎΠ³ с Π±ΠΎΡ‚ΠΎΠΌ https://t.me/BotAuthBot

Facebook

  1. Π£ вас Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ создана страница, Ссли Π΅Π΅ Π½Π΅Ρ‚, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ https://www.facebook.com/pages/creation/?ref_type=universal_creation_hub
  2. Π”ΠΎΠ±Π²ΡŒΡ‚Π΅ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ https://developers.facebook.com/apps/
  3. Π’ настройках ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ "ОсновноС", скопируйтС "Π‘Π΅ΠΊΡ€Π΅Ρ‚ прилоТСния" Π² .env BOTAUTH_FACEBOOK_API_SECRET
  4. Π’ настройках ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ "Messenger"
  5. Π’ настройках ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° "Messenger" создайтС Ρ‚ΠΎΠΊΠ΅Π½ доступа, ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Π΅Π³ΠΎ Π² .env BOTAUTH_FACEBOOK_API_TOKEN
  6. Π’ настройках ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° "Messenger" создайтС Π²Π΅Π± Ρ…ΡƒΠΊ, Π² URL ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ https://DOMAIN/botauth/callback/facebook Π² ΠΏΠΎΠ»Π΅ "ΠŸΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚Π΅ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€" ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ тСкст, сохранитС Π² .env BOTAUTH_FACEBOOK_API_CONFIRM Π² опциях "Поля подписки" Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ "messages" Π½Π°ΠΆΠΌΠΈΡ‚Π΅ "ΠŸΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ"
  7. ПослС подтвСрТдСния сСрвСра Π² настройках Π²Π΅Π± Ρ…ΡƒΠΊΠΎΠ² Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ страницу, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ "ΠŸΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ" Π²Ρ‹Π±Ρ€Π°Π½ Π½ΡƒΠΆΠ½ΡƒΡŽ страницу
  8. Π’ ΠΎΠΊΠ½Π΅ "ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° прилоТСния Messenger" рядом с ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠΌ "pages_messaging" Π½Π°ΠΆΠΌΠΈΡ‚Π΅ "Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊ заявкС"
  9. Π‘ΠΎΡ‚ ΡƒΠΆΠ΅ Π³ΠΎΡ‚ΠΎΠ² ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅, Π½ΠΎ доступСн Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для администраторов. ПослС подтвСрТдСния прилоТСния, ΠΎΠ½ станСт доступСн для всСх посСтитСлСй. ΠžΡ‚ΠΏΡ€Π°Π²ΡŒΡ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΌΠΎΠ΄Π΅Ρ€Π°Ρ†ΠΈΡŽ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ прямой ссылки Π½Π° Π΄ΠΈΠ°Π»ΠΎΠ³ с Π±ΠΎΡ‚ΠΎΠΌ https://m.me/zetridercode


Π’Π°ΠΆΠ½ΠΎ:

  1. Π‘Π°ΠΉΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΠΎ https
  2. Facebook Π±ΠΎΡ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ PSID, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ соотвСтствуСт ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠΌΡƒ ID ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.
  3. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π±ΠΎΡ‚Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с модСлью \App\User. Если Ρƒ вас Π΄Ρ€ΡƒΠ³ΠΎΠΉ случай, просто создайтС свой ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΈ модСль Π½Π° основС ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΈΠ· рСпозитория.

Как Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ свой ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€:

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ свой класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ наслСдуСт абстрактный класс ZetRider\BotAuth\AbstractProvider

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ example/ExampleProvider.php

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² сСрвис ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ AppServiceProvider Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ boot

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

ΠŸΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ запросы Π² callback ΠΏΠΎ адрСсу /botauth/callback/example

Бобытия

Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ ΠΏΡ€ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ сообщСния ΠΎΡ‚ Π±ΠΎΡ‚Π°

// 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'));
});