我正在尝试将社交名流认证系统与其提供的少数驱动程序集成在一起。到目前为止,我确实实现了google和youtube,但正如标题所述,google可以正常运行,但是当我尝试在身份验证窗口中选择youtube频道时,我收到的错误消息越来越长,列出了一堆文件,并且我认为第一行是最重要:
[引用]
GuzzleHttp \ Exception \ ClientException:客户端错误:GET https://www.googleapis.com/oauth2/v3/userinfo?prettyPrint=false
导致401 Unauthorized
响应:/ var / www / html /中的{“ error”:“ invalid_request”,“ error_description”:“ Invalid Credentials”} compro / vendor / guzzlehttp / guzzle / src / Exception / RequestException.php:113
[/ quote]
这是我的迁移
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社交名流完全正常工作,至少这是该驱动程序的文档描述要添加的内容:
Laravel\Socialite\SocialiteServiceProvider::class,
\SocialiteProviders\Manager\ServiceProvider::class,
在app / Providers / EventServiceProvider.php中添加了以下几行:
\SocialiteProviders\Manager\SocialiteWasCalled::class => [
'SocialiteProviders\\YouTube\\YouTubeExtendSocialite@handle',
],
在app / User.php中创建关系:
public function profile()
{
return $this->hasOne('App\SocialProfile');
}
在routes / 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