Я делаю обходной путь, чтобы позволить пользователю связать свою учетную запись в социальных сетях с нашим приложением, а также напрямую создать учетную запись, используя свои учетные записи в социальных сетях.Я придерживался этой стратегии здесь для привязки учетной записи пользователя в социальной сети, так как, если я также использую ее для непосредственного создания их учетных записей, у меня есть куча ошибок.Итак, на данный момент код работает, за исключением твиттера, поскольку он возвращает ошибку:
Класс '\ 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 обратного вызова.Это полное сообщение об ошибке:
Обратите внимание, что я использовал Черты, указанные на ссылке.В фейсбуке и гугле код работает хорошо кроме твиттера.Кто-нибудь случайно знает, что является причиной этого?
ОБНОВЛЕНИЕ
Как и то, что я проверил из 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);
}