2017-07-29 59 views
0

我的預期結果是讓用戶在Facebook登錄後重定向到我的主頁。我使用的是Socialite,Laravel 5.4和Xampp。在能夠通過Facebook登錄後,我的網址現在處於回調狀態,其中回調調用重定向至主頁的登錄控制器。所以問題是重定向到主頁後,我的網址現在有一些哈希值。

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

當我重新加載頁面時,它會在abstractprovider.php中顯示錯誤無效狀態異常。我在功能上錯過了什麼嗎?在Facebook登錄後重新加載我的頁面時,Laravel Socialite InvalidStateException在AbstractProvider.php中

在我的登錄控制器

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)); 
    } 

裏面我services.php文件

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

我的路線內/ web.php

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

我還包括這些在我的配置/app.php

所有的

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

請點擊此鏈接(https://stackoverflow.com/questions/30660847/laravel-socialite-invalidstateexception) –

回答

-2

首先,運行下面的命令:

composer require laravel/socialite 

之後在應用程序/ config.php中添加以下行中提供。

Laravel\Socialite\SocialiteServiceProvider::class, 

之後在應用程序/ config.php文件別名

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

添加下面一行在配置/ services.php附加:

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

現在創建兩個路線,我的是這樣的:

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

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

您還需要上面,像這樣的路線創建控制器:

<?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'; 
      } 
     } 

} 

最後,添加網站網址到您的Facebook應用程序。我按照上面提出的解決方案的這篇文章。 https://www.cloudways.com/blog/social-login-in-laravel-using-socialite/

+0

它仍然是相同的。 – Ralph

+0

您的客戶端ID和客戶端密碼應該是唯一的 –

+0

並確保在FB應用中添加網站網址 –

0

你可以試試這個東西)

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

    return view('user-profile', compact('user',$user)); 
} 
相關問題