samedi 10 octobre 2015

NotFoundHttp Exception (Controller Method Not Found )- Laravel 5.1 Facebook Login

I am integrating Facebook Login in my New Laravel 5.1.The user will have the option to manually login by using Facebook Login or the traditional form login.So far I have no problem implementing traditional login

For the Laravel Socialite, I think I already set correctly

composer.json

 "laravel/socialite": "^2.0",

config/app.php

  'providers' => [

    /*
     * Laravel Framework Service Providers...
     */
    .........
    .........
    Illuminate\Html\HtmlServiceProvider::class,

    /*
     * Application Service Providers...
     */
    App\Providers\AppServiceProvider::class,
    App\Providers\AuthServiceProvider::class,
    App\Providers\EventServiceProvider::class,
    App\Providers\RouteServiceProvider::class,

    Laracasts\Flash\FlashServiceProvider::class,
    Laracasts\Generators\GeneratorsServiceProvider::class,

    AlgoliaSearch\Laravel\AlgoliaServiceProvider::class,

    Laravel\Socialite\SocialiteServiceProvider::class,

],

AuthController

 <?php

 namespace App\Http\Controllers\Auth;

 use Socialite;
 //use Illuminate\Routing\Controller;
 use App\User;
 use Validator;
 use Auth;
 use App\Http\Controllers\Controller;
 use Illuminate\Foundation\Auth\ThrottlesLogins;
 use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;

 class AuthController extends Controller
 {


 use AuthenticatesAndRegistersUsers, ThrottlesLogins;

 protected $redirectTo = '/admin';

/**
 * Create a new authentication controller instance.
 *
 * @return void
 */
public function __construct()
{
    $this->middleware('guest', ['except' => 'getLogout']);
}
//temporarily redirected to duterte-run.mendanielle.com
public function getRegister()
{
    return view('auth.login');
}
/**
 * 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, [
        'username' => '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([
        'firstname' => $data['firstname'],
        'lastname' => $data['lastname'],
        'username' => $data['username'],
        'email' => $data['email'],
        'password' => bcrypt($data['password']),
    ]);
}

 /**
 * Redirect the user to the GitHub authentication page.
 *
 * @return Response
 */
public function redirectToProvider()
{
    return Socialite::driver('facebook')->redirect();
}

/**
 * Obtain the user information from GitHub.
 *
 * @return Response
 */
public function handleProviderCallback()
{
   // try {
        $user = Socialite::driver('facebook')->user();
  //  } catch (Exception $e) {
     //   return redirect('auth/facebook');
  //  }

   // $authUser = $this->findOrCreateUser($user);

  //  Auth::login($authUser, true);

   // return redirect()->route('home');
}

routes.php

Route::get('auth/facebook', 'Auth\AuthController@redirectToProvider');
Route::get('auth/facebook/callback', 'Auth\AuthController@handleProviderCallback');     

login form

<form class="form-horizontal" role="form" method="POST" action="{{ url('/auth/login') }}">
<input type="hidden" name="_token" value="{{ csrf_token() }}">

<div class="form-group">
  <label class="col-md-4 control-label">E-Mail Address</label>
    <div class="col-md-6">
     <input type="email" class="form-control" name="email" value="{{ old('email') }}">
     </div>
    </div>

<div class="form-group">
  <label class="col-md-4 control-label">Password</label>
    <div class="col-md-6">
     <input type="password" class="form-control" name="password">
    </div>
  </div>

<div class="form-group">
    <div class="col-md-6 col-md-offset-4">
     <div class="checkbox">
        <label><input type="checkbox" name="remember"> Remember Me</label>
     </div>
    </div>
</div>

<div class="form-group">
 <div class="col-md-6 col-md-offset-4">
    <button type="submit" class="btn btn-primary">Login</button>

    <a class="btn btn-link" href="{{ url('/password/email') }}">Forgot Your Password?</a>
 </div>
</div>
<div class="form-group">
  <div class="col-md-6 col-md-offset-4">
    <a class="btn btn-link" href="{{ url('/auth/facebook') }}">Login With Facebook</a>
  </div>
</div>
</form>

I followed the latest documentation at Laravel.com website,and inside services.php

'facebook' => [
    'client_id' => env('FACEBOOK_CLIENT_ID'),
    'client_secret' => env('FACEBOOK_CLIENT_SECRET'),
    'redirect' => env('CALL_BACK_URL'),
],

And the .env file

FACEBOOK_CLIENT_ID=1834566497828637244
FACEBOOK_CLIENT_SECRET=9505676d1f50bty7b613baa7b68786op5ba48
CALL_BACK_URL=http://localhost:9090/auth/login

The login button will redirect me to

localhost:9090/auth/facebook

NotFoundHttpException in Controller.php line 269:
Controller method not found.

at Controller->missingMethod('facebook') at call_user_func_array(array(object(AuthController), 'missingMethod'), array('_missing' => 'facebook')) in Controller.php line 256 at Controller->callAction('missingMethod', array('_missing' => 'facebook')) in ControllerDispatcher.php line 164 at ControllerDispatcher->call(object(AuthController), object(Route), 'missingMethod') in ControllerDispatcher.php line 112 at ControllerDispatcher->Illuminate\Routing{closure}(object(Request)) at call_user_func(object(Closure), object(Request)) in Pipeline.php line 139 at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in RedirectIfAuthenticated.php line 41

So what's the proper way? How do you integrate Socialite in Laravel 5.1?



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire