php - Laravel 5.6 与社交名流登录 facebook
问题描述
我尝试使用社交名流使用 facebook 登录。我在developers.facebook.com 上注册并获得了我的APP_ID 和Secret_code,并在我的.env 文件和config/services.php 中实现了它。但是当我输入我的用户名和密码 facebook 后,它无法将我引导到主页。我使用了来自 laravel 的身份验证脚手架
错误
登录控制器.php
<?php
namespace App\Http\Controllers\Auth;
use App\User;
use Socialite;
use Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
class LoginController extends Controller
{
/*
|--------------------------------------------------------------------------
| Login Controller
|--------------------------------------------------------------------------
|
| This controller handles authenticating users for the application and
| redirecting them to your home screen. The controller uses a trait
| to conveniently provide its functionality to your applications.
|
*/
use AuthenticatesUsers;
/**
* Where to redirect users after login.
*
* @var string
*/
protected $redirectTo = '/home';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest')->except('logout');
}
public function redirectToProvider($provider)
{
return Socialite::driver($provider)->redirect();
}
/**
* Obtain the user information from provider. Check if the user already exists in our
* database by looking up their provider_id in the database.
* If the user exists, log them in. Otherwise, create a new user then log them in. After that
* redirect them to the authenticated users homepage.
*
* @return Response
*/
public function handleProviderCallback($provider)
{
$user = Socialite::driver($provider)->user();
$authUser = $this->findOrCreateUser($user, $provider);
Auth::login($authUser, true);
return redirect($this->redirectTo);
}
/**
* If a user has registered before using social auth, return the user
* else, create a new user object.
* @param $user Socialite user object
* @param $provider Social auth provider
* @return User
*/
public function findOrCreateUser($user, $provider)
{
$authUser = User::where('provider_id', $user->id)->first();
if ($authUser) {
return $authUser;
}
return User::create([
'name' => $user->name,
'email' => $user->email,
'provider' => $provider,
'provider_id' => $user->id
]);
}
}
.env
FB_ID=321**14684*****
FB_SECRET=40fb4782*****5b7b88391f4599f18c7
FB_URL=https://localhost:8000/auth/facebook/callback
网页.php
Route::get('/', function () {
return view('homepage');
});
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');
Route::get('auth/{provider}', 'Auth\LoginController@redirectToProvider');
Route::get('auth/{provider}/callback',
'Auth\LoginController@handleProviderCallback');
**App\User.php**
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password','provider','provider_id'
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
}
配置/服务.php
'facebook' => [
'client_id' => env('FB_ID'),
'client_secret' => env('FB_SECRET'),
'redirect' => env('FB_URL'),
],
请给我一些建议来解决这个问题。我很抱歉我的英语不好。谢谢你。
解决方案
推荐阅读
- javascript - Vuejs 渲染子组件
- react-native - 每次单击输出时,如何在不重复的情况下在本机反应中显示数字 0 到 10?
- c# - 带有 ER Core 5 的 ASP.Net C# Web API 控制器 - 添加控制器错误
- python - 从元组列表中减去元组列表
- c# - 枚举是否是 int 拆箱?
- go - 使用sync.WaitGroup时退出for循环的更好方法?
- ios - 一些乌尔都语字符在 UITextView 上无法正确呈现
- javascript - 动态导入不适用于快速路线
- kivy - 当使用 Kivy 更改窗口大小时,如何强制 FloatLayout 保持与其中图像相同的尺寸?
- javascript - 如何调用文件下载快速中间件功能?