Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 30.09.2017 00:03:00

как работает авторизация API VK

Laravel 5.2
Для аутентификации использую API VK.
Для этого использую пакет "socialite-providers/vkontakte".
Все сделал по инструкции https://laravel-news.ru/blog/tutorials/socialite-login.
Все работает отлично, но назрела необходимость подпилить кое-что (кроме имени, емейла и vk_id сохранять еще и url аватарки юзера), а значит разобраться детально как это работает.
Желание разобраться есть, но кое-чего не понимаю...

Начал с простого - открыл routes.php, увидел строчку

Route::get('/social_login/{provider}', 'SocialController@login');

ок, направляемся в контроллер SocialController, смотрим метод login():

public function login($provider)
    {
        return Socialite::with($provider)->redirect();
    }

ок, смотрю на верх, вижу:

use Socialite;

хорошо, это я знаю, посмотрю в алиасах (config/app.php) что это за класс:

'Socialite' => Laravel\Socialite\Facades\Socialite::class,

открываю этот класс и вижу:

namespace Laravel\Socialite\Facades;
use Illuminate\Support\Facades\Facade;

class Socialite extends Facade
{

    protected static function getFacadeAccessor()
    {
        return 'Laravel\Socialite\Contracts\Factory';
    }
}

И тут я попадаю в тупик, потому что не понимаю, как это работает и каким образом мне разобраться куда направиться дальше.
Куда дальше идет вызов?
Пожалуйста, подскажите непутевому. Если объясните на пальцах - отлично. Направите на ресурс - тоже хорошо.

Изменено Yurri_87 (02.10.2017 08:00:29)

Не в сети

#2 04.10.2017 18:17:10

Re: как работает авторизация API VK

deleted

Изменено sam (04.10.2017 18:20:23)

Не в сети

#3 04.10.2017 18:39:57

Re: как работает авторизация API VK

Ты дошел до фасадов в ларавел (не путать с паттерном - фасад).

Заметь

extends Facade

Перейди в этот родительский класс Facade и увидишь магический метод __callStatic, который перенаправляет вызов любого метода этого класса на объект из IoC, а строка для поиска объекта берется из функции getFacadeAccessor();

Т.е. в каком-то из serviceprovider'ов, которые указаны в app.providers конфиге, есть явная установка app()->bind('Laravel\Socialite\Contracts\Factory', new MySuperClass());

Другими словами - фасад предоставляет статичный доступ к не статичным методам.

Изменено covobo (04.10.2017 18:44:04)

Не в сети

Подвал раздела