【发布时间】:2021-07-27 02:12:24
【问题描述】:
我想用 facebook 登录,我创建 laravel 身份验证,我用 facebook 添加按钮登录,我通过命令 composer require laravel/socialite 安装 laravel socialite 包,我在 config/services 中添加配置:
'facebook' => [
'client_id' => env('FACEBOOK_CLIENT_ID'),
'client_secret' => env('FACEBOOK_CLIENT_SECRET'),
'redirect' => 'http://localhost:8000/laravel-socialite/public/login/facebook/callback',
],
我在 routes/web.php 中添加了路由:
Route::get ('login/facebook',[App\Http\Controllers\Auth\LoginController::class, 'redirectToFacebook'])->name('login.facebook');
Route::get('login/facebook/callback',[App\Http\Controllers\Auth\LoginController::class,'handleFacebookCallback']);
我输入了按钮“用 facebook 登录”网址:
<a href="{{ route('login.facebook') }}" class="btn btn-danger btn-block">login with Facebook</a>
我将 id 和变量键放在 .env 文件中:
FACEBOOK_CLIENT_ID="1332763360453031"
FACEBOOK_CLIENT_SECRET="b459fd6252126609a1ad1a5d81161f1d"
我在 loginController 中创建了 _registerOrLoginUser 函数:
protected function _registerOrLoginUser ($ data)
{
$ user = User :: where ('email', '=', $ data-> email) -> first ();
if (! $ user) {
$ user = new User ();
$ user-> name = $ data-> name;
$ user-> email = $ data-> email;
$ user-> provider_id = $ data-> provider_id;
$ user-> avatar = $ data-> avatar;
$ user-> save ();
}
Auth :: login ($ user);
}
我在 LoginController.php 中添加了这两个函数,并调用了 _registerOrLoginUser 函数并重定向到“home”。
public function redirectToFacebook () {
return Socialite :: driver ('google') -> redirect ();
}
public function handleFacebookCallback () {
$ user = Socialite :: driver ('facebook') -> user ();
$ this -> _ registerOrLoginUser ($ user);
return redirect () -> route ('home');
}
我创建了 google 应用程序来获取 id 和 sercret。
数据库/表用户迁移:
public function up ()
{
Schema :: create ('users', function (Blueprint $ table) {
$ table-> id ();
$ table-> string ('name');
$ table-> string ('email');
$ table-> timestamp ('email_verified_at') -> nullable ();
$ table-> string ('password');
$ table-> string ('provider_id') -> nullable ();
$ table-> string ('avatar') -> nullable ();
$ table-> rememberToken ();
$ table-> timestamps ();
});
}
最后,当我点击 facebook 的登录按钮时,它会打开带有 invalid app ID 消息的 facebook 页面
The application ID provided does not appear to be valid。
在链接中:
https://www.facebook.com/v3.3/dialog/oauth?client_id=&redirect_uri=http%3A%2F%2Flocalhost%3A8000%2Faswaktin%2Fpublic%2Flogin%2Ffacebook%2Fcallback&scope=email&response_type=code&state=mxWJ2fjpUyAqvhs6o88V3wOJXjkBBZdbU3MCbirY
【问题讨论】:
标签: php laravel facebook-authentication laravel-socialite