Я пытаюсь интегрировать систему аутентификации в социальных сетях с несколькими драйверами, которые она предлагает. До сих пор я реализовал Google и YouTube, но, как следует из заголовка, Google работает правильно, но когда я пытаюсь выбрать канал YouTube в окне аутентификации, я получаю длинное сообщение об ошибке, перечисляющее кучу файлов, и я думаю, что первая строка наиболее важный:
[Цитата]
GuzzleHttp \ Exception \ ClientException: ошибка клиента: GET https://www.googleapis.com/oauth2/v3/userinfo?prettyPrint=false
привела к ответу 401 Unauthorized
: {"error": "invalid_request", "error_description": "Invalid Credentials"} в / var / www / html / compro / vendor / guzzlehttp / жрать / SRC / Исключение / RequestException.php: 113
[/ Цитата]
Это моя миграция:
public function up()
{
Schema::create('social_accounts', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id')->unsigned();
$table->string('provider_user_id');
$table->string('provider');
$table->timestamps();
$table->softDeletes();
});
Schema::table('social_accounts', function (Blueprint $table) {
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
});
}
И другие файлы ... в .env У меня настроены следующие значения:
GOOGLE_CLIENT_ID=secret_id_value_obviously
GOOGLE_CLIENT_SECRET=secret_secret_value_obviously
GOOGLE_REDIRECT=http://localhost:8000/auth/google/callback
YOUTUBE_CLIENT_ID=secret_id_value_obviously
YOUTUBE_CLIENT_SECRET=secret_secret_value_obviously
YOUTUBE_REDIRECT=http://localhost:8000/auth/google/callback
В config / services.php добавлено:
'google' => [
'client_id' => env('GOOGLE_CLIENT_ID'),
'client_secret' => env('GOOGLE_CLIENT_SECRET'),
'redirect' => env('GOOGLE_REDIRECT'),
],
'youtube' => [
'client_id' => env('YOUTUBE_CLIENT_ID'),
'client_secret' => env('YOUTUBE_CLIENT_SECRET'),
'redirect' => env('YOUTUBE_REDIRECT'),
],
В config / app.php добавлены эти строки, чтобы заставить youtube socialite работать вообще, по крайней мере, это то, что описывается в документации этого драйвера:
Laravel\Socialite\SocialiteServiceProvider::class,
\SocialiteProviders\Manager\ServiceProvider::class,
В app / Providers / EventServiceProvider.php добавлены следующие строки:
\SocialiteProviders\Manager\SocialiteWasCalled::class => [
'SocialiteProviders\\YouTube\\YouTubeExtendSocialite@handle',
],
В приложении / User.php создано отношение:
public function profile()
{
return $this->hasOne('App\SocialProfile');
}
В маршрутах / web.php:
Route::get('/login', function () {
return view('socialLogin');
});
Route::get('/auth/social/{social}', 'SocialLoginController@redirectToSocial');
Route::get('/auth/{social}/callback', 'SocialLoginController@handleSocialCallback');
Я впервые пользуюсь светским светом, поэтому я как бы схожу с ума и не знаю, где я мог ошибиться. Добавление других светских драйверов, вероятно, пройдет легко, но в этом случае это может быть что-то среднее между Google и YouTube, что вызывает ошибку.
Если кто-то хочет взглянуть на это, вот полное сообщение об ошибке:
https://pastebin.com/5s29K4cQ