Laravel社交名媛继续将我引导回家

时间:2016-07-28 03:56:31

标签: php laravel laravel-socialite

我正在尝试建立一个Linkedin& Google使用Laravel社交网站套件登录我的Laravel 5 / Angular 2网站。

社交网站提供程序和别名已正确插入config/app.php文件

以下是我在config/services.php文件中插入的代码

'linkedin' => [
    'client_id' => '[hidden-linkedin-client-id]',
    'client_secret' => '[hidden-linkedin-client-secret]',
    'redirect' => 'http://localhost:8888/profile',
],

'google' => [
    'client_id' => '[hidden-google-client-id]',
    'client_secret' => '[hidden-google-client-secret]',
    'redirect' => 'http://localhost:8888/profile',
],

以下是我创建的路线......

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

...以及Http/Controllers/Auth/AuthController.php

中的相关功能
public function redirectToProvider($provider)
{
    Log::info('redirecting');
    return Socialite::driver($provider)->redirect();
}

public function handleProviderCallback($provider)
{
    $user = Socialite::driver($provider)->user();

    return $user->token;
}

然后,当我导航到http://localhost:8888/auth/githubhttp://localhost:8888/auth/linkedin时,它会将我重定向到http://localhost:8888而没有任何日志。我哪里出错了?

2 个答案:

答案 0 :(得分:0)

更新社交重定向的配置,检查以下内容: -

public function redirectToProvider(){
  try{
    Log::info('redirecting');
    return Socialite::driver(\Request::segment(2))->redirect();
  }catch(\Exception $e){
    Log::info('Exception in redirect');
  }
}

和重定向功能应该是这样的: -

$(function () {
    $('body').prepend(RangeBar({
       min: moment().startOf('day').format('LLLL'),
       max: moment().startOf('day').add(1, 'day').format('LLLL'),
       valueFormat: function(ts) {
          return moment(ts).format('HH:mm');
       },
       valueParse: function(date) {
          return moment(date).valueOf();
       },
       values: [
       [
          moment().startOf('day').add(5.0, 'hours').format('LLLL'),
          moment().startOf('day').add(6.0, 'hours').format('LLLL')
       ],
       [
          moment().startOf('day').add(12.0, 'hours').format('LLLL'),
          moment().startOf('day').add(13.0, 'hours').format('LLLL')
       ],
       [
          moment().endOf('day').subtract(5.0, 'hours').format('LLLL'),
          moment().endOf('day').subtract(4.0, 'hours').format('LLLL')
       ],
       ],
       label: function(a){
          var jsonText = JSON.stringify(a);
          return jsonText;
       },
       snap: 1000 * 60 * 30, 
       minSize: 1000 * 60 * 60, 
       bgLabels: 24,
       allowDelete: true,
       indicator: null
       }).on('changing', function(ev, ranges, changed) {
       $('pre.changing').html(JSON.stringify(ranges,null,2));
       }).$el);
       $(document).ready(function() {
          $('.elessar-range').addClass('fixed'); 
          // it helps to set read only values - yellow blocks.
       });

       $("#submit").click(function () {
              ...
       });
});

答案 1 :(得分:0)

非常感谢您的帮助,但由于未调用redirectToProvider()函数,因此您的答案均无效。

所以我保留了我的初始代码,最后通过在中间件Middleware/RedirectIfAuthenticated.php中注释这些行来使其工作:

public function handle($request, Closure $next, $guard = null)
    {
        /* 
            if (Auth::guard($guard)->check()) {
                return redirect('/');
            }
        */
        return $next($request);
    }

这显然是一种解决方法,但这是我发现的最佳解决方案。