与Laravel一起登录Facebook时,如何显示成功的信息



当一个人与Facebook(Socialite)登录时,我正在尝试显示一个成功的消息。但是,由于某种原因,我的控制器并没有将会话对象重定向。我的Facebook登录工作正常。我认为Laravel正在使用 preected $ redirectPath ='/'; 为此。我如何通过此路径发送会话?

我如何尝试实现这一目标:

authcontroller:

protected $redirectPath = '/';
public function redirectToProvider()
{
    return Socialite::driver('facebook')->redirect();
}
public function handleProviderCallback()
{
     try {
         $user = Socialite::driver('facebook')->user();
     } catch (Exception $e) {
         return redirect('auth/facebook');
     }
     $authUser = $this->findOrCreateUser($user);
     Auth::login($authUser, true);
     // I think this line is not executing annymore bevause of the Auth::login redirect
     return redirect()->back()->with('successfullFacebookLogin', Auth::user()->name);
}

在我看来:

@if(session()->has('successfullFacebookLogin'))
<!-- Open login modal when successfully logged in with facebook -->
     @include('snippets.facebook-login-modal')
@endif
@if(session()->has('successfullFacebookLogin'))
    <!-- Open successfull login modal-->
    <script>
        $(document).ready(function() {
            $('#successfullFacebookLoginModal').modal('show');
        });
    </script>
@endif

我的routes.php文件(没有无关的代码):

Route::group(['middleware' => ['web']], function () {
    // Logged in
    Route::group(['middleware' => 'auth'], function () {
        // Delete a user
        Route::get('/admin/user/delete/{id}',  'ProfileController@deleteUser');
    });
        // Facebook login
        Route::get('auth/facebook', array('as' => 'facebookLogin', 'uses' => "AuthAuthController@redirectToProvider"));
    Route::get('auth/facebook/callback', 'AuthAuthController@handleProviderCallback');
    // Get Register page
    Route::get('/register', array('as' => 'getRegister', 'uses' => 'AuthAuthController@getRegister'));
    // Register
    Route::post('/register', array('as' => 'register', 'uses' => 'AuthAuthController@register'));
    // Login
    Route::get('/login', array('as' => 'getLogin', 'uses' => 'AuthAuthController@getRegister'));
    // Login
    Route::post('/login', array('as' => 'login', 'uses' => 'AuthAuthController@login'));
    // Login (with modal)
    Route::post('/login/modal', array('as' => 'loginModal', 'uses' => 'AuthAuthController@loginModal'));
    // Logout
    Route::get('auth/logout', array('as' => 'getLogout','uses' => 'AuthAuthController@getLogout'));
});

您做错了。重定向时,您不能使用with发送数据,因为with仅用于将数据作为变量传递到视图模板。

在您的情况下,您需要使用会话来发送数据。

示例:

<?php
session()->flash('successfullFacebookLogin', Auth::user()->name); 

并将其放在您的重定向代码之前。

有关会话的更多信息:https://laravel.com/docs/5.2/session

最新更新