Класс '\ Laravel \ Socialite \ Two \ TwitterProvider' не найден Ошибка - PullRequest
0 голосов
/ 21 мая 2019

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

Класс '\ 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();
}

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

enter image description here

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

ОБНОВЛЕНИЕ

Как и то, что я проверил из 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);
}

1 Ответ

0 голосов
/ 21 мая 2019

добавили ли вы следующее в 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'),
    ],
...