【问题标题】:Class '\Laravel\Socialite\Two\TwitterProvider' not found Error找不到类 '\Laravel\Socialite\Two\TwitterProvider' 错误
【发布时间】:2019-10-07 19:14:18
【问题描述】:

我正在做一些解决方法,以允许用户将他们的社交媒体帐户链接到我们的应用程序,以及使用他们的社交媒体帐户直接创建一个帐户。 我已经按照here 这个策略链接用户的社交媒体帐户,如果我也使用它直接创建他们的帐户,我有一堆错误。所以现在,除了 twitter 之外的代码都可以工作,因为它会返回错误:

类'\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。这是显示的完整错误消息:

请注意,我使用了链接中提供的特征。在 facebook 和 Google 中,代码运行良好,除了 twitter。有人碰巧知道这是什么原因吗?

更新

正如我从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);
}

【问题讨论】:

  • 你在控制器的命名空间下面声明了吗?
  • @BradGoldsmith 根据我的检查,Twitter 使用的是 \Laravel\Socialite\One\\TwitterProvider,而其他 SNS 使用的是 \Laravel\Socialite\Two\\TwitterProvider 在 SocialiteManager.php 文件中,你碰巧知道解决这个 Twitter 错误的方法吗?

标签: laravel twitter-oauth classnotfoundexception laravel-socialite


【解决方案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'),
    ],

【讨论】:

  • 你是否将 TwitterProvider 类添加到 config/app.php 中的 providers 数组中
猜你喜欢
  • 1970-01-01
  • 2020-07-07
  • 2018-03-22
  • 2018-10-10
  • 2018-05-11
  • 2016-05-26
  • 2016-11-05
  • 2016-07-11
  • 1970-01-01
相关资源
最近更新 更多