2017-07-29 3 views
0

Mon résultat escompté est que l'utilisateur soit redirigé vers ma page d'accueil après connexion à facebook. J'utilise Socialite, Laravel 5.4 et Xampp. Après avoir été en mesure de se connecter via Facebook, mon URL est maintenant en rappel dans lequel le rappel appelle le logincontroller qui redirige vers la page d'accueil. Donc, le problème est après redirigé vers la page d'accueil, mon URL a maintenant une valeur hachée.

localhost/sampleProject/public/login/facebook/callback? Code = AQBZpjdW ...

et quand je recharge la page, elle montre une exception d'état non valide dans abstractprovider.php. Est-ce qu'il me manque quelque chose dans mes fonctions?Laravel Socialite InvalidStateException dans AbstractProvider.php lors du rechargement de ma page après le login facebook

intérieur de mon contrôleur de connexion

public function redirectToProvider() 
    { 
     return Socialite::driver('facebook')->redirect(); 
    } 

    /** 
    * Obtain the user information from facebook. 
    * 
    * @return Response 
    */ 
    public function handleProviderCallback() 
    { 
     $user = Socialite::driver('facebook')->user(); 

     return view('user-profile', compact('user',$user)); 
    } 

Dans mon fichier services.php

'facebook' => [ 
    'client_id' => 'insert_app_id_here', 
    'client_secret' => 'enter_app_secret_here', 
    'redirect' => 'http://localhost/sampleProject/public/login/facebook/callback', 
], 

intérieur mes itinéraires/web.php

Route::get('login/facebook', 'Auth\[email protected]'); 
Route::get('login/facebook/callback', 'Auth\[email protected]'); 

J'ai également inclus dans ces ma config /app.php

Laravel\Socialite\SocialiteServiceProvider::class, 

et

'Socialite' => Laravel\Socialite\Facades\Socialite::class, 
+0

S'il vous plaît suivez ce lien (https://stackoverflow.com/questions/30660847/laravel-socialite-invalidstateexception) –

Répondre

-2

Tout d'abord, exécutez la commande suivante:

composer require laravel/socialite 

Après que, dans app/config.php ajouter la ligne suivante dans les fournisseurs.

Laravel\Socialite\SocialiteServiceProvider::class, 

Après que, dans app/config.php ajouter la ligne suivante dans les alias

'Socialite' => Laravel\Socialite\Facades\Socialite::class, 

Dans config/services.php ajouter:

//Socialite 
    'facebook' => [ 
     'client_id'  => '1234567890444', 
     'client_secret' => '1aa2af333336fffvvvffffvff', 
     'redirect'  => 'http://laravel.dev/login/callback/facebook', 
    ], 

Maintenant, créez deux routes, les miens sont comme ceux-ci:

//Social Login 
Route::get('/login/{provider?}',[ 
    'uses' => '[email protected]', 
    'as' => 'auth.getSocialAuth' 
]); 

Route::get('/login/callback/{provider?}',[ 
    'uses' => '[email protected]', 
    'as' => 'auth.getSocialAuthCallback' 
]); 

Vous devez également créer contrôleur pour les routes ci-dessus comme ceci:

<?php namespace App\Http\Controllers; 

use Laravel\Socialite\Contracts\Factory as Socialite; 

class AuthController extends Controller 
{ 

     public function __construct(Socialite $socialite){ 
      $this->socialite = $socialite; 
     } 


     public function getSocialAuth($provider=null) 
     { 
      if(!config("services.$provider")) abort('404'); //just to handle providers that doesn't exist 

      return $this->socialite->with($provider)->redirect(); 
     } 


     public function getSocialAuthCallback($provider=null) 
     { 
      if($user = $this->socialite->with($provider)->user()){ 
      dd($user); 
      }else{ 
      return 'something went wrong'; 
      } 
     } 

} 

et enfin, ajouter l'URL du site à votre Facebook App. J'ai suivi cet article pour la solution proposée ci-dessus. https://www.cloudways.com/blog/social-login-in-laravel-using-socialite/

+0

son toujours le même. – Ralph

+0

Votre identifiant client et secret client doit être unique –

+0

et assurez-vous d'ajouter l'URL du site dans l'application FB –

0

Vous pouvez essayer cette chose)

public function handleProviderCallback(Request $request) 
{ 
    session()->put('state', $request->input('state')); 
    $user = Socialite::driver('facebook')->user(); 

    return view('user-profile', compact('user',$user)); 
}