2017 © Pedro PelΓ‘ez
 

project social-auth

Authentication via Social Networks

image

sunsingerus/social-auth

Authentication via Social Networks

  • Sunday, July 9, 2017
  • by sunsingerus
  • Repository
  • 1 Watchers
  • 2 Stars
  • 8 Installations
  • PHP
  • 1 Dependents
  • 0 Suggesters
  • 54 Forks
  • 0 Open issues
  • 1 Versions
  • 0 % Grown

The README.md

SocialAuther

SocialAuther - это PHP Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для упрощСния Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π° вашСм сайтС Ρ‡Π΅Ρ€Π΅Π· популярныС ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ сСти ΠΈ сСрвисы:, (*1)

Π—Π°ΠΌΠ΅Ρ‚ΠΊΠ°: Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ настройка осущСствляСтся для локального сСрвСра, (*2)

Π—Π°ΠΌΠ΅Ρ‚ΠΊΠ°: для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Π°Π²Ρ‚ΠΎΠ·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ классов require_once 'lib/SocialAuther/autoload.php';, (*3)

ИспользованиС

АутСнтификация Ρ‡Π΅Ρ€Π΅Π· Π’ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅! Если ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ ΠΏΠΎ ссылкС Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π³Π΅Π½Π΅Ρ€ΠΈΡƒΠ΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ $vkAdapter->getAuthUrl(), Π² качСствС ΠΎΡ‚Π²Π΅Ρ‚Π° выводится сооб Ρ‰Π΅Π½ΠΈΠ΅ {"error":"invalid_request","error_description":"Security Error"}_, Ρ‚ΠΎ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒΡΡ Π½Π° страницу настроСк вашСго vk Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π°. Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ "Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Π’Π°ΡˆΠ΅ΠΉ страницы" Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ссылку "ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ активности". Π’ ΠΎΡ‚ΠΊΡ€Ρ‹Π²ΡˆΠ΅ΠΌΡΡ ΠΎΠΊΠ½Π΅ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ "Π—Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ всС сСансы", для очистки vk кэша. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, возникшая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°_ security_error Π±ΡƒΠ΄Π΅Ρ‚ устранСна., (*4)

Для осущСствлСния Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΡΠ΅Ρ‚ΡŒ Π’ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ ΡΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹: client_id, client_secret ΠΈ redirect_uri:, (*5)

  • Π¨Π°Π³ 1. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ прилоТСния:
    • Π½Π°Π·Π²Π°Π½ΠΈΠ΅: "SocialAuther Test"
    • Ρ‚ΠΈΠΏ: "Π’Π΅Π±-сайт"
  • Π¨Π°Π³ 2. Настройка сСкции "Open API":
    • адрСс сайта: http://localhost/auth?provider=vk
    • Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Π΄ΠΎΠΌΠ΅Π½: "localhost"
  • Π¨Π°Π³ 3. ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² client_id, client_secret ΠΈ redirect_uri:
    • client_id - содСрТится Π² ΠΎΠΏΡ†ΠΈΠΈ "ID прилоТСния". ΠŸΡ€ΠΈΠΌΠ΅Ρ€: 3078654
    • client_secret - содСрТится Π² ΠΎΠΏΡ†ΠΈΠΈ "Π—Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡". ΠŸΡ€ΠΈΠΌΠ΅Ρ€: zrCHcmKAcBvblSUIBIwu
    • redirect_uri - содСрТится Π² ΠΎΠΏΡ†ΠΈΠΈ "АдрСс сайта". ΠŸΡ€ΠΈΠΌΠ΅Ρ€: http://localhost/auth?provider=vk
  • Π¨Π°Π³ 4. ИспользованиС SocialAuther.

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ SocialAuther:, (*6)

<?php

// конфигурация настроСк Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π°
$vkAdapterConfig = array(
    'client_id'     => '3078654',
    'client_secret' => 'zrCHcmKAcBvblSUIBIwu',
    'redirect_uri'  => 'http://localhost/auth?provider=vk'
);

// созданиС Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π° ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° настроСк
$vkAdapter = new SocialAuther\Adapter\Vk($vkAdapterConfig);

// ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π° Π² SocialAuther
$auther = new SocialAuther\SocialAuther($vkAdapter);

// аутСнтификация ΠΈ Π²Ρ‹Π²ΠΎΠ΄ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈΠ»ΠΈ Π²Ρ‹Π²ΠΎΠ΄ ссылки для Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ
if (!isset($_GET['code'])) {
    echo '<p><a href="' . $auther->getAuthUrl() . '">АутСнтификация Ρ‡Π΅Ρ€Π΅Π· Π’ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Π΅</a></p>';
} else {
    if ($auther->authenticate()) {
        if (!is_null($auther->getSocialId()))
            echo "Π‘ΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ID ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: " . $auther->getSocialId() . '<br />';

        if (!is_null($auther->getName()))
            echo "Имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: " . $auther->getName() . '<br />';

        if (!is_null($auther->getEmail()))
            echo "Email ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: " . $auther->getEmail() . '<br />';

        if (!is_null($auther->getSocialPage()))
            echo "Бсылка Π½Π° ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: " . $auther->getSocialPage() . '<br />';

        if (!is_null($auther->getSex()))
            echo "Пол ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: " . $auther->getSex() . '<br />';

        if (!is_null($auther->getBirthday()))
            echo "Π”Π΅Π½ΡŒ РоТдСния: " . $auther->getBirthday() . '<br />';

        // Π°Π²Π°Ρ‚Π°Ρ€ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ 
        if (!is_null($auther->getAvatar()))
            echo '<img src="' . $auther->getAvatar() . '" />'; echo "<br />";
    }
}

АутСнтификация Ρ‡Π΅Ρ€Π΅Π· Одноклассники

Для осущСствлСния Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΡΠ΅Ρ‚ΡŒ Одноклассники Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ ΡΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹: client_id, client_secret, redirect_uri, public_key:, (*7)

  • Π¨Π°Π³ 1. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ прилоТСния:
    • Π’Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ "Π’Π½Π΅ Одноклассников"
    • Π’Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ "oAuth авторизация"
  • Π¨Π°Π³ 2. Настройка прилоТСния:
    • Π½Π°Π·Π²Π°Π½ΠΈΠ΅: "SocialAuther Test"
    • shortname: _www.odnoklassniki.ru/game/auther
    • ссылка Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅: http://localhost/auth?provider=odnoklassniki
    • "Бсылка Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ" ΠΈ "Бсылка Π½Π° Π°Π²Π°Ρ‚Π°Ρ€ΠΊΡƒ": ссылка Π½Π° любоС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅
  • Π¨Π°Π³ 3. ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² client_id, client_secret, redirect_uri, public_key. Π’ΡΡŽ Π½ΡƒΠΆΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π²Ρ‹ Π½Π°ΠΉΠ΄Ρ‘Ρ‚Π΅ Π² письмС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±Ρ‹Π»ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ΠΎ Π½Π° Π²Π°ΡˆΡƒ ΡΠ»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½ΡƒΡŽ ΠΏΠΎΡ‡Ρ‚Ρƒ послС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ добавлСния прилоТСния:
    • client_id - Application ID. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: 658606315
    • client_secret - сСкрСтный ΠΊΠ»ΡŽΡ‡ прилоТСния. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: C35045020A8C7C066F25C4C7
    • redirect_uri - ссылка Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: http://localhost/auth?provider=odnoklassniki
    • public_key - ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ прилоТСния. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: BAMKABABACADCBBAB
  • Π¨Π°Π³ 4. ИспользованиС SocialAuther.

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ SocialAuther:, (*8)

<?php

$odnoklassnikiConfig = array(
    'client_id'     => '658606315',
    'client_secret' => 'C35045020A8C7C066F25C4C7',
    'redirect_uri'  => 'http://localhost/auth?provider=odnoklassniki',
    'public_key'    => 'BAMKABABACADCBBAB'
);

$odnoklassnikiAdapter = new SocialAuther\Adapter\Odnoklassniki($odnoklassnikiConfig);

$auther = new SocialAuther\SocialAuther($odnoklassnikiAdapter);

if (!isset($_GET['code'])) {
    echo '<p><a href="' . $auther->getAuthUrl() . '">АутСнтификация Ρ‡Π΅Ρ€Π΅Π· Одноклассники</a></p>';
} else {
    if ($auther->authenticate()) {
        if (!is_null($auther->getSocialId()))
            echo "Π‘ΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ID ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: " . $auther->getSocialId() . '<br />';

        if (!is_null($auther->getName()))
            echo "Имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: " . $auther->getName() . '<br />';

        if (!is_null($auther->getEmail()))
            echo "Email ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: " . $auther->getEmail() . '<br />';

        if (!is_null($auther->getSocialPage()))
            echo "Бсылка Π½Π° ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: " . $auther->getSocialPage() . '<br />';

        if (!is_null($auther->getSex()))
            echo "Пол ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: " . $auther->getSex() . '<br />';

        if (!is_null($auther->getBirthday()))
            echo "Π”Π΅Π½ΡŒ РоТдСния: " . $auther->getBirthday() . '<br />';

        // Π°Π²Π°Ρ‚Π°Ρ€ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
        if (!is_null($auther->getAvatar()))
            echo '<img src="' . $auther->getAvatar() . '" />'; echo "<br />";
    }
}

АутСнтификация Ρ‡Π΅Ρ€Π΅Π· Mail.ru

  • Π¨Π°Π³ 1. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ прилоТСния:
    • соглашаСмся с ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ
    • Π½Π°Π·Π²Π°Π½ΠΈΠ΅: "SocialAuther Test"
    • адрСс Π³Π»Π°Π²Π½ΠΎΠΉ страницы: http://localhost/auth?provider=mailru
  • Π¨Π°Π³ 2. Настройка прилоТСния:
    • скачиваСм ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» receiver.html ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ Π² ΠΏΠ°ΠΏΠΊΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°
    • для установки Π½Π° Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ сСрвСр, Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ "ΠŸΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ"
  • Π¨Π°Π³ 3. ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² client_id, client_secret, redirect_uri:
    • client_id - ID. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: 670707
    • client_secret - сСкрСтный ΠΊΠ»ΡŽΡ‡. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: a619062972f2073ded61405b8f8eccd2
    • redirect_uri - адрСс Π³Π»Π°Π²Π½ΠΎΠΉ страницы. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: http://localhost/auth?provider=mailru
  • Π¨Π°Π³ 4. ИспользованиС SocialAuther.

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ SocialAuther:, (*9)

<?php

$mailruAdapterConfig = array(
    'client_id'     => '670707',
    'client_secret' => 'a619062972f2073ded61405b8f8eccd2',
    'redirect_uri'  => 'http://localhost/auth?provider=mailru'
);

$mailruAdapter = new SocialAuther\Adapter\Mailru($mailruAdapterConfig);

$auther = new SocialAuther\SocialAuther($mailruAdapter);

if (!isset($_GET['code'])) {
    echo '<p><a href="' . $auther->getAuthUrl() . '">АутСнтификация Ρ‡Π΅Ρ€Π΅Π· Mail.ru</a></p>';
} else {
    if ($auther->authenticate()) {
        if (!is_null($auther->getSocialId()))
            echo "Π‘ΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ID ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: " . $auther->getSocialId() . '<br />';

        if (!is_null($auther->getName()))
            echo "Имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: " . $auther->getName() . '<br />';

        if (!is_null($auther->getEmail()))
            echo "Email ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: " . $auther->getEmail() . '<br />';

        if (!is_null($auther->getSocialPage()))
            echo "Бсылка Π½Π° ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: " . $auther->getSocialPage() . '<br />';

        if (!is_null($auther->getSex()))
            echo "Пол ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: " . $auther->getSex() . '<br />';

        if (!is_null($auther->getBirthday()))
            echo "Π”Π΅Π½ΡŒ РоТдСния: " . $auther->getBirthday() . '<br />';

        // Π°Π²Π°Ρ‚Π°Ρ€ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
        if (!is_null($auther->getAvatar()))
            echo '<img src="' . $auther->getAvatar() . '" />'; echo "<br />";
    }
}

АутСнтификация Ρ‡Π΅Ρ€Π΅Π· Yandex

  • Π¨Π°Π³ 1. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ прилоТСния:
  • Π¨Π°Π³ 2. Настройка прилоТСния:
    • НазваниС: "SocialAuther Test"
    • ΠŸΡ€Π°Π²Π°: "ЯндСкс.Π›ΠΎΠ³ΠΈΠ½ - АдрСс элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹; Π”Π°Ρ‚Π° роТдСния; Имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ЀИО, ΠΏΠΎΠ»"
    • Callback URI: http://localhost/auth?provider=yandex
  • Π¨Π°Π³ 3. ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² client_id, client_secret, redirect_uri:
    • client_id - Id прилоТСния. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: bff0bfcaef054ab66c0538b39e0a86cf
    • client_secret - ΠŸΠ°Ρ€ΠΎΠ»ΡŒ прилоТСния. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: 219ba88d386b114b9c6abef7eab4e8e4
    • redirect_uri - Callback URI. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: http://localhost/auth?provider=yandex
  • Π¨Π°Π³ 4. ИспользованиС SocialAuther.

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ SocialAuther:, (*10)

<?php

$yandexAdapterConfig = array(
    'client_id'     => 'bff0bfcaef054ab66c0538b39e0a86cf',
    'client_secret' => '219ba88d386b114b9c6abef7eab4e8e4',
    'redirect_uri'  => 'http://localhost/auth?provider=yandex'
);

$yandexAdapter = new SocialAuther\Adapter\Yandex($yandexAdapterConfig);

$auther = new SocialAuther\SocialAuther($yandexAdapter);

if (!isset($_GET['code'])) {
    echo '<p><a href="' . $auther->getAuthUrl() . '">АутСнтификация Ρ‡Π΅Ρ€Π΅Π· Yandex</a></p>';
} else {
    if ($auther->authenticate()) {
        if (!is_null($auther->getSocialId()))
            echo "Π‘ΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ID ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: " . $auther->getSocialId() . '<br />';

        if (!is_null($auther->getName()))
            echo "Имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: " . $auther->getName() . '<br />';

        if (!is_null($auther->getEmail()))
            echo "Email ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: " . $auther->getEmail() . '<br />';

        if (!is_null($auther->getSocialPage()))
            echo "Бсылка Π½Π° ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: " . $auther->getSocialPage() . '<br />';

        if (!is_null($auther->getSex()))
            echo "Пол ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: " . $auther->getSex() . '<br />';

        if (!is_null($auther->getBirthday()))
            echo "Π”Π΅Π½ΡŒ РоТдСния: " . $auther->getBirthday() . '<br />';

        // Π°Π²Π°Ρ‚Π°Ρ€ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
        if (!is_null($auther->getAvatar()))
            echo '<img src="' . $auther->getAvatar() . '" />'; echo "<br />";
    }
}

АутСнтификация Ρ‡Π΅Ρ€Π΅Π· Google

  • Π¨Π°Π³ 1. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ прилоТСния:
    • Π² мСню Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ "API Access"
    • Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ "Create an OAuth 2.0 Client ID..."
  • Π¨Π°Π³ 2. Настройка прилоТСния:
    • API Access: "SocialAuther Test"
    • НаТимаСм Next
    • Application Type: "Web application"
    • Your site or hostname: localhost/google-auth
    • НаТимаСм Create client ID
  • Π¨Π°Π³ 3. ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² client_id, client_secret, redirect_uri:
    • client_id - Id прилоТСния. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: 333739311538.apps.googleusercontent.com
    • client_secret - ΠŸΠ°Ρ€ΠΎΠ»ΡŒ прилоТСния. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: lZB3aW8UG8gDj6WVIEIcidt5
    • redirect_uri - Callback URI. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: http://localhost/auth?provider=google
  • Π¨Π°Π³ 4. ИспользованиС SocialAuther.

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ SocialAuther:, (*11)

<?php

$googleAdapterConfig = array(
    'client_id'     => '393337311853.apps.googleusercontent.com',
    'client_secret' => 'B38WaUlZG8gDI6jIEWVct5id',
    'redirect_uri'  => 'http://localhost/auth?provider=google'
);

$googleAdapter = new SocialAuther\Adapter\Google($googleAdapterConfig);

$auther = new SocialAuther\SocialAuther($googleAdapter);

if (!isset($_GET['code'])) {
    echo '<p><a href="' . $auther->getAuthUrl() . '">АутСнтификация Ρ‡Π΅Ρ€Π΅Π· Google</a></p>';
} else {
    if ($auther->authenticate()) {
        if (!is_null($auther->getSocialId()))
            echo "Π‘ΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ID ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: " . $auther->getSocialId() . '<br />';

        if (!is_null($auther->getName()))
            echo "Имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: " . $auther->getName() . '<br />';

        if (!is_null($auther->getEmail()))
            echo "Email ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: " . $auther->getEmail() . '<br />';

        if (!is_null($auther->getSocialPage()))
            echo "Бсылка Π½Π° ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: " . $auther->getSocialPage() . '<br />';

        if (!is_null($auther->getSex()))
            echo "Пол ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: " . $auther->getSex() . '<br />';

        if (!is_null($auther->getBirthday()))
            echo "Π”Π΅Π½ΡŒ РоТдСния: " . $auther->getBirthday() . '<br />';

        // Π°Π²Π°Ρ‚Π°Ρ€ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
        if (!is_null($auther->getAvatar()))
            echo '<img src="' . $auther->getAvatar() . '" />'; echo "<br />";
    }
}

АутСнтификация Ρ‡Π΅Ρ€Π΅Π· Facebook

  • Π¨Π°Π³ 1. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ прилоТСния:
    • НаТимаСм Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ "+ Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅"
    • App Name: "SocialAuther Test"
    • НаТимаСм "ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ"
  • Π¨Π°Π³ 2. Настройка прилоТСния:
    • НаТимаСм "Website with Facebook Login"
    • Π’Π²ΠΎΠ΄ΠΈΠΌ Site URL: http://localhost/auth?provider=facebook
  • Π¨Π°Π³ 3. ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² client_id, client_secret, redirect_uri:
    • client_id - App ID. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: 346158195993388
    • client_secret - App Secret. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: 2de1ab376d1c17cd47250920c05ab386
    • redirect_uri - Callback URI. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: http://localhost/auth?provider=facebook
  • Π¨Π°Π³ 4. ИспользованиС SocialAuther.

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ SocialAuther:, (*12)

<?php

$facebookAdapterConfig = array(
    'client_id'     => '346158195993388',
    'client_secret' => '2de1ab376d1c17cd47250920c05ab386',
    'redirect_uri'  => 'http://localhost/auth?provider=facebook'
);

$facebookAdapter = new SocialAuther\Adapter\Facebook($facebookAdapterConfig);

$auther = new SocialAuther\SocialAuther($facebookAdapter);

if (!isset($_GET['code'])) {
    echo '<p><a href="' . $auther->getAuthUrl() . '">АутСнтификация Ρ‡Π΅Ρ€Π΅Π· Facebook</a></p>';
} else {
    if ($auther->authenticate()) {
        if (!is_null($auther->getSocialId()))
            echo "Π‘ΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ID ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: " . $auther->getSocialId() . '<br />';

        if (!is_null($auther->getName()))
            echo "Имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: " . $auther->getName() . '<br />';

        if (!is_null($auther->getEmail()))
            echo "Email ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: " . $auther->getEmail() . '<br />';

        if (!is_null($auther->getSocialPage()))
            echo "Бсылка Π½Π° ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: " . $auther->getSocialPage() . '<br />';

        if (!is_null($auther->getSex()))
            echo "Пол ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: " . $auther->getSex() . '<br />';

        if (!is_null($auther->getBirthday()))
            echo "Π”Π΅Π½ΡŒ РоТдСния: " . $auther->getBirthday() . '<br />';

        // Π°Π²Π°Ρ‚Π°Ρ€ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
        if (!is_null($auther->getAvatar()))
            echo '<img src="' . $auther->getAvatar() . '" />'; echo "<br />";
    }
}

АутСнтификация Ρ‡Π΅Ρ€Π΅Π· Twitter

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅! Для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· Twitter Π½Π° сСрвСрС Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ выставлСны настройки Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ Π΄Π°Ρ‚Ρ‹, Π±Π»ΠΈΠ·ΠΊΠΈΠ΅ ΠΊ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ. ΠŸΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚ΡŒ Π² нСсколько ΠΌΠΈΠ½ΡƒΡ‚ допустима, Π½ΠΎ ΠΏΡ€ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… отклонСниях ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΡƒΠΆΠ΅ Π½Π° этапС формирования URL для Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, (*13)

  • Π¨Π°Π³ 1. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ прилоТСния:
    • Name: "SocialAuther Test"
    • Description: "SocialAuther Test Description"
    • Website: "http://localhost"
    • Callback URL: "http://localhost"
  • Π¨Π°Π³ 2. ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² client_id, client_secret ΠΈ redirect_uri:
    • client_id - API key. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: ef054ab66c0538b39e0a865cf
    • client_secret - API secret. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: 6d6c0538b39e0a86cf219ba88d386b114b9c6abef7eab4e8e4
    • redirect_uri - Callback URL. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: http://localhost/auth?provider=twitter
  • Π¨Π°Π³ 3. ИспользованиС SocialAuther.

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ SocialAuther:, (*14)

<?php

// конфигурация настроСк Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π°
$twiAdapterConfig = array(
    'client_id'     => 'ef054ab66c0538b39e0a865cf',
    'client_secret' => '6d6c0538b39e0a86cf219ba88d386b114b9c6abef7eab4e8e4',
    'redirect_uri'  => 'http://localhost/auth?provider=twitter'
);

// созданиС Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π° ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° настроСк
$twiAdapter = new SocialAuther\Adapter\Twitter($twiAdapterConfig);

// ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π° Π² SocialAuther
$auther = new SocialAuther\SocialAuther($twiAdapter);

// аутСнтификация ΠΈ Π²Ρ‹Π²ΠΎΠ΄ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈΠ»ΠΈ Π²Ρ‹Π²ΠΎΠ΄ ссылки для Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ
if (!isset($_GET[$auther->getResponseType()]) {
    echo '<p><a href="' . $auther->getAuthUrl() . '">АутСнтификация Ρ‡Π΅Ρ€Π΅Π· Twitter</a></p>';
} else {
    if ($auther->authenticate()) {
        if (!is_null($auther->getSocialId()))
            echo "Π‘ΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ID ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: " . $auther->getSocialId() . '<br />';

        if (!is_null($auther->getName()))
            echo "Имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: " . $auther->getName() . '<br />';

        if (!is_null($auther->getEmail()))
            echo "Email ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: " . $auther->getEmail() . '<br />';

        if (!is_null($auther->getSocialPage()))
            echo "Бсылка Π½Π° ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: " . $auther->getSocialPage() . '<br />';

        if (!is_null($auther->getSex()))
            echo "Пол ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: " . $auther->getSex() . '<br />';

        if (!is_null($auther->getBirthday()))
            echo "Π”Π΅Π½ΡŒ РоТдСния: " . $auther->getBirthday() . '<br />';

        // Π°Π²Π°Ρ‚Π°Ρ€ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ 
        if (!is_null($auther->getAvatar()))
            echo '<img src="' . $auther->getAvatar() . '" />'; echo "<br />";
    }
}

ИспользованиС SocialAuther с нСсколькими ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ сСтями ΠΈ сСрвисами

<?php

$adapterConfigs = array(
    'vk' => array(
        'client_id'     => '3078654',
        'client_secret' => 'zrCHcmKAcBvblSUIBIwu',
        'redirect_uri'  => 'http://localhost/auth/?provider=vk'
    ),
    'odnoklassniki' => array(
        'client_id'     => '658606315',
        'client_secret' => 'C35045020A8C7C066F25C4C7',
        'redirect_uri'  => 'http://localhost/auth?provider=odnoklassniki',
        'public_key'    => 'BAMKABABACADCBBAB'
    ),
    'mailru' => array(
        'client_id'     => '670707',
        'client_secret' => 'a619062972f2073ded61405b8f8eccd2',
        'redirect_uri'  => 'http://localhost/auth/?provider=mailru'
    ),
    'yandex' => array(
        'client_id'     => 'bff0bfcaef054ab66c0538b39e0a86cf',
        'client_secret' => '219ba88d386b114b9c6abef7eab4e8e4',
        'redirect_uri'  => 'http://localhost/auth/?provider=yandex'
    ),
    'google' => array(
        'client_id'     => '393337311853.apps.googleusercontent.com',
        'client_secret' => 'B38WaUlZG8gDI6jIEWVct5id',
        'redirect_uri'  => 'http://localhost/auth?provider=google'
    ),
    'facebook' => array(
        'client_id'     => '346158195993388',
        'client_secret' => '2de1ab376d1c17cd47250920c05ab386',
        'redirect_uri'  => 'http://localhost/auth?provider=facebook'
    ),
    'twitter' => array(
        'client_id'     => 'ef054ab66c0538b39e0a865cf',
        'client_secret' => '6d6c0538b39e0a86cf219ba88d386b114b9c6abef7eab4e8e4',
        'redirect_uri'  => 'http://localhost/auth?provider=twitter'
    ),        
);

// созданиС Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ΠΎΠ²
$adapters = array();
$responses = array();
foreach ($adapterConfigs as $adapter => $settings) {
    $class = 'SocialAuther\Adapter\\' . ucfirst($adapter);
    $adapters[$adapter] = new $class($settings);
    $responses[$adapter] = $adapters[$adapter]->getResponseType();
}

if (    !isset($_GET['provider'])
    ||  !array_key_exists($_GET['provider'], $adapters) 
    ||  !isset($_GET[$responses[$_GET['provider']]])
) {    
    foreach ($adapters as $title => $adapter) {
        echo '<p><a href="' . $adapter->getAuthUrl() . '">АутСнтификация Ρ‡Π΅Ρ€Π΅Π· ' . ucfirst($title) . '</a></p>';
    }
} else {
    $auther = new SocialAuther\SocialAuther($adapters[$_GET['provider']]);        

    if ($auther->authenticate()) {
        if (!is_null($auther->getSocialId()))
            echo "Π‘ΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ID ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: " . $auther->getSocialId() . '<br />';

        if (!is_null($auther->getName()))
            echo "Имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: " . $auther->getName() . '<br />';

        if (!is_null($auther->getEmail()))
            echo "Email ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: " . $auther->getEmail() . '<br />';

        if (!is_null($auther->getSocialPage()))
            echo "Бсылка Π½Π° ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: " . $auther->getSocialPage() . '<br />';

        if (!is_null($auther->getSex()))
            echo "Пол ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: " . $auther->getSex() . '<br />';

        if (!is_null($auther->getBirthday()))
            echo "Π”Π΅Π½ΡŒ РоТдСния: " . $auther->getBirthday() . '<br />';

        // Π°Π²Π°Ρ‚Π°Ρ€ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
        if (!is_null($auther->getAvatar()))
            echo '<img src="' . $auther->getAvatar() . '" />'; echo "<br />";
    }
}

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ

SocialAuther 1.0

The Versions

09/07 2017

dev-master

9999999-dev https://github.com/sunsingerus/social-auth

Authentication via Social Networks

  Sources   Download

GPL

The Requires

  • php >=5.6.0

 

by Stanislav Protasevich
by Vladlen Grachev (https://github.com/gwer)
by sunsingerus (https://github.com/sunsingerus)

auth social network