Firefox和Chrome在以下Facebook Connect实施中出现“太多重定向”错误

时间:2013-06-19 21:37:38

标签: facebook laravel facebook-php-sdk

// GET "giris-yap/facebook"
public function action_facebook_index()
{
    $facebook = IoC::resolve('facebook-sdk');
    $user = $facebook->getUser();

    if($user)
    {
        $profile = $facebook->api('/me');

        return View::make('home.login-facebook')
            ->with('message_area', null)
            ->with('username', $profile['username']);
    }
    else
    {
        return Redirect::to($facebook->getLoginUrl(array('next' => 'http://dugun.dev/giris-yap/facebook')));
    }
}

// POST "giris-yap/facebook"
public function action_facebook_process()
{
    $facebook = IoC::resolve('facebook-sdk');
    $user = $facebook->getUser();
    $profile = $facebook->api('/me');

    $input = Input::all();

    Auth::attempt(array('username' =>  $profile['username'], 'password' => $input['password']));

    if(Auth::check())
        return Redirect::to('account');
    else
        return View::make('home.login-facebook')
            ->with('message_area', 'Giriş denemesi başarısız.')
            ->with('username', $profile['username']);
}

上面的代码在我的机器上完美运行,但我的朋友在Chrome和Firefox上都出错了。

Chrome:错误310(net :: ERR_TOO_MANY_REDIRECTS):重定向过多。

Firefox:Firefox检测到服务器正在以永远无法完成的方式重定向此地址的请求。

它发生在这一行:

return Redirect::to($facebook->getLoginUrl(array('next' => 'http://dugun.dev/giris-yap/facebook')));

理论上;我重定向到Facebook,然后Facebook重定向回action_facebook_index(),然后重复。但是,Facebook不应该重定向它。它应该向用户显示表单以提供应用程序权限,然后重定向回来。这通常在我的个人电脑上运行,但我的朋友遇到了上述问题。

我能做些什么来解决它吗?

2 个答案:

答案 0 :(得分:0)

可能不会修复它,但你应该分开一些逻辑。检查已登录Facebook用户的部分应位于路由过滤器中。然后将作为参数传递的数组移除到getLoginUrl方法(Facebook自动重定向到请求页面)。

您的朋友也可能关闭了Cookie吗?

答案 1 :(得分:0)

问题是Facebook应用程序处于Sanbox模式,因此只有应用程序所有者才能访问所需的API。如果其他人提出请求,Facebook会将其重定向回来,从而创建一个无限循环。

通过在Facebook应用程序设置上关闭沙盒模式并提供适当的权限来解决该问题。