我正在尝试使用Laravel 5.1登录facebook。
我正在关注laravel文档中提到的每个步骤。 http://laravel.com/docs/5.1/authentication#social-authentication
但是,当我通过Facebook登录时,它将重定向到我的正常登录页面。 在排序会话中存储在Facebook登录。
这是我编写的代码。
Router.php
Route::get('auth/facebook','Auth\AuthController@redirectToProvider');
Route::get('auth/facebook/callback','Auth\AuthController@handleProviderCallback');
AuthController.php
public function redirectToProvider()
{
return Socialite::driver('facebook')
->scopes(['email', 'public_profile'])
->redirect();
}
public function handleProviderCallback()
{
$user = Socialite::driver('github')->user();
$user = Socialite::driver('github')->user();
// OAuth Two Providers
$token = $user->token;
// OAuth One Providers
$token = $user->token;
$tokenSecret = $user->tokenSecret;
// All Providers
$user->getId();
$user->getNickname();
$user->getName();
$user->getEmail();
$user->getAvatar();
}
Services.php
'facebook' => [
'client_id' => '1625567400000000',
'client_secret' => 'secret',
'redirect' => 'http://localhost:8000/',
],
当我输入localhost / 8000 / auth / facebook时,它会将我重定向到facebook并获得public_profile,email等的许可。 它将重定向回localhost / auth / login。
当我在URL中输入localhost:8000 / auth / facebook / callback时,会出现这样的错误;
Middleware.php第69行中的ClientException:
客户端错误:404
答案 0 :(得分:1)
对于您的情况,我邀请您使用中间件检查用户是否已登录。这可能是您重定向到localhost/auth/login
的问题
我希望以下代码对您有用
public function handleProviderCallback()
{
//retrieve user's information from facebook
$socUser = Socialite::driver('facebook')->user();
//check user already exists in db
$user = \App\User::where('email', $socUser->getEmail())->first();
if($user) {
// if exist, log user into your application
// and redirect to any path you want
\Auth::login($user);
return redirect()->route('user.index');
}
//if not exist, create new user,
// log user into your application
// and resirect to any path you want
$user = new \App\User ;
$user->email = $socUser->getEmail();
// ...
// ...
// ...
$user->save();
\Auth::login($user); // login user
return redirect()->route('user.index'); // redirect
}
注意:我没有测试我的代码但你应该知道
了解更多信息:http://laravel.com/docs/5.1/authentication
和@mimo提到,
Services.php文件中的重定向网址必须为
本地主机:8000 / AUTH /实/回调
答案 1 :(得分:0)
Services.php文件中的重定向网址必须为
localhost:8000/auth/facebook/callback