Класс '\ Laravel \ Socialite \ Two \ TwitterProvider' не найден Ошибка

Я делаю обходной путь, чтобы позволить пользователю связать свою учетную запись в социальной сети с нашим приложением, а также напрямую создать учетную запись, используя свои учетные записи в социальных сетях. Я следовал этой стратегии здесь для привязки учетной записи пользователя в социальных сетях, если я также использую ее в непосредственно создавая свои аккаунты, у меня куча ошибок. Итак, пока код работает, за исключением твиттера, поскольку он возвращает ошибку:

Класс '\ Laravel \ Socialite \ Two \ TwitterProvider'

Итак, в моем веб-маршруте у меня есть следующее:

// Link SNS
Route::post('/redirect/{provider}', 'User\SocialMediaController@linkMedia');
Route::get('/callback/link/{provider}', 'User\SocialMediaController@saveMedia')->name('socialLinkCallback');

В моем файле SocialMediaController у меня есть следующее:

use CanbuildSocialProvider;
/**
 *
 * link SNS
 *
 */
public function linkMedia(Request $request)
{
    $provider = $request->route('provider');
    $this->provider = $provider;
    $redirectUrl = url('/callback/link/' . $provider);

    return $this->buildSocialProvider($redirectUrl)->redirect();
}

И мои настройки twitter api, я уже добавил URL-адрес обратного вызова. Это полное сообщение об ошибке:

введите здесь описание изображения

Обратите внимание, что я использовал Черты, указанные по ссылке. В фейсбуке и гугле код работает хорошо, кроме твиттера. Кто-нибудь случайно знает, в чем причина этого?

ОБНОВЛЕНИЕ

Как видно из vendor>laravel>socialite>src>SocialiteManager.php, Twitter использует \Laravel\Socialite\One\AbstractProvider, а другие используют \Laravel\Socialite\Two\AbstractProvider. Есть ли способ переопределить это здесь:

public function buildSocialProvider(string $redirectUrl = null): ProviderInterface
{
    $providerClass = ucfirst($this->provider);
    $provider = strtoupper($this->provider);

    $config = [
        'client_id' => env($provider . '_CLIENT_ID'),
        'client_secret' => env($provider. '_CLIENT_SECRET'),
        'redirect' => $redirectUrl,
    ];

    return Socialite::buildProvider('\Laravel\Socialite\Two\\' . $providerClass . 'Provider', $config);
}

person Eem Jee    schedule 21.05.2019    source источник
comment
вы объявили это под пространством имен в контроллере?   -  person Brad Goldsmith    schedule 21.05.2019
comment
@BradGoldsmith Согласно моей проверке, Twitter использует \Laravel\Socialite\One\\TwitterProvider, в то время как другие социальные сети используют \Laravel\Socialite\Two\\TwitterProvider в SocialiteManager.php файле, знаете ли вы, как исправить эту ошибку Twitter?   -  person Eem Jee    schedule 21.05.2019


Ответы (1)


добавили ли вы следующее в config / services.php, следуйте этому руководству https://medium.com/@Alabuja/social-login-in-laravel-with-socialite-90dbf14ee0ab

'twitter' => [
        'client_id'     => env('TWITTER_CLIENT_ID'),
        'client_secret' => env('TWITTER_CLIENT_SECRET'),
        'redirect'      => env('TWITTER_URL'),
    ],
person Bimal Prasad Pandey    schedule 21.05.2019
comment
Вы добавили класс TwitterProvider в массив поставщиков в config / app.php? - person Bimal Prasad Pandey; 21.05.2019