I have followed all the step in http://laravel.com/docs/5.1/authentication to make the social login with facebook on Laravel 5.1.
Here the steps that I've followed:
1 - Use the command in my Laravel root project:
composer require laravel/socialite
2 - register the Laravel\Socialite\SocialiteServiceProvider in your config/app.php configuration file:
'providers' => [
// Other service providers...
Laravel\Socialite\SocialiteServiceProvider::class,
],
3 - Add the Socialite facade to the aliases array in your app configuration file:
'Socialite' => Laravel\Socialite\Facades\Socialite::class,
4 - add the facebook services in config/services.php:
'facebook' => [
'client_id' => env('FACEBOOK_CLIENT_ID'),
'client_secret' => env('FACEBOOK_CLIENT_SECRET'),
'redirect' => 'http://homestead.app/auth/facebook/callback',
],
5 - add to my AuthController.php the methods redirectToProvider() and handleProviderCallback():
<?php
namespace App\Http\Controllers\Auth;
use App\User;
use Validator;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ThrottlesLogins;
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;
use Socialite;
class AuthController extends Controller
{
/*
|--------------------------------------------------------------------------
| Registration & Login Controller
|--------------------------------------------------------------------------
|
| This controller handles the registration of new users, as well as the
| authentication of existing users. By default, this controller uses
| a simple trait to add these behaviors. Why don't you explore it?
|
*/
use AuthenticatesAndRegistersUsers, ThrottlesLogins;
/**
* Redirect path after successful login
*
* @var string
*/
protected $redirectPath = '/greeting';
/**
* Redirect path after failed login
*
* @var string
*/
protected $loginPath = '/auth/login';
/**
* Create a new authentication controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest', ['except' => 'getLogout']);
}
/**
* Get a validator for an incoming registration request.
*
* @param array $data
* @return \Illuminate\Contracts\Validation\Validator
*/
protected function validator(array $data)
{
return Validator::make($data, [
'name' => 'required|max:255',
'email' => 'required|email|max:255|unique:users',
'password' => 'required|confirmed|min:6',
]);
}
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return User
*/
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
]);
}
/**
* Redirect the user to the Facebook authentication page.
*
* @return Response
*/
public function redirectToProvider()
{
return Socialite::driver('facebook')->redirect();
}
/**
* Obtain the user information from Facebook.
*
* @return Response
*/
public function handleProviderCallback()
{
$user = Socialite::driver('facebook')->user();
dd($user);
}
}
I want to highlight that I have created AuthController.php in the folder app/Http/Controllers/Auth/ because after it asks to create the routes: 'Auth\AuthController@redirectToProvider' 'Auth\AuthController@handleProviderCallback'
6 - I've added the routes:
Route::get('auth/facebook', 'Auth\AuthController@redirectToProvider');
Route::get('auth/facebook/callback', 'Auth\AuthController@handleProviderCallback');
Now, when I click "Login with facebook" in my login page it goes to http://homestead.app/auth/facebook and get me the following error:
FatalErrorException in AuthController.php line 90: Class 'Socialite' not found
I have tried to follow the codeanchor guide but it is for laravel 5.0 (I need to use that on laravel 5.1)
The controller creates the user and saves it into the database. Then it redirects the user, who is not yet authenticated, to the login route. The postLogin method gets triggered, but this time with no request data. As a result, Auth::attempt($credentials) fails and you get that nasty Failure on screen.
The attempt method accepts an array of key / value pairs as its first argument. The password value will be hashed. The other values in the array will be used to find the user in your database table. So, in the example above, the user will be retrieved by the value of the email column.
Finally I have solved with deleting everything and installing Homestead again from the start
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With