Laravel facebook没有重定向,如果应用程序已经允许


laravel facebook no redirect back if app allowed already

我在社交网站/facebook上取得了成功。

我的代码——

配置/services.php:

'facebook' => [
    'client_id' => 'client_id',
    'client_secret' => 'client_secret',
    'redirect' => 'http://www.example.com/facebook/callback',
],

routes.php:

Route::get('facebook', 'FacebookController@redirectToProvider');
Route::get('facebook/callback', 'FacebookController@handleProviderCallback');

FacebookController.php:

public function redirectToProvider()
{
    return Socialite::with('facebook')->redirect();
}
public function handleProviderCallback(Request $request, User $user)
{
    $users = Socialite::with('facebook')->user();
    // user registration and login
    // if the user is in the database, just login
    return redirect()->back();   
}

一切正常,注册,登录和重定向,直到一个点。

如果应用程序已经被允许,它会正常重定向回。如果你先通过Facebook认证并允许应用程序,它不会重定向。

但是,如果重定向是主页:

 return redirect('/');

所以我在这里找到了解决方案:http://laravel.io/forum/08 - 03 - 2014重定向- -第二最后一页的

My solved code:

public function redirectToProvider()
{
    // added this
    Session::flash('url',$_SERVER['HTTP_REFERER']);
    return Socialite::with('facebook')->redirect();
}
public function handleProviderCallback(Request $request, User $user)
{
    $users = Socialite::with('facebook')->user();
    // user registration and login
    // if the user is in the database, just login
    // redirect changed from redirect()->back(); to this
    return Redirect::to(Session::get('url'));
}

https://developers.facebook.com中选择您的应用程序,并通过仪表板中可用的App Review选项,使您的应用程序公开并完全填写审批标准

我的主要观点是,你的一切都很好,只是在facebook应用程序的开发者仪表板上做了一些小的改变。

相关文章: