// 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不应该重定向它。它应该向用户显示表单以提供应用程序权限,然后重定向回来。这通常在我的个人电脑上运行,但我的朋友遇到了上述问题。
我能做些什么来解决它吗?
答案 0 :(得分:0)
可能不会修复它,但你应该分开一些逻辑。检查已登录Facebook用户的部分应位于路由过滤器中。然后将作为参数传递的数组移除到getLoginUrl方法(Facebook自动重定向到请求页面)。
您的朋友也可能关闭了Cookie吗?
答案 1 :(得分:0)
问题是Facebook应用程序处于Sanbox模式,因此只有应用程序所有者才能访问所需的API。如果其他人提出请求,Facebook会将其重定向回来,从而创建一个无限循环。
通过在Facebook应用程序设置上关闭沙盒模式并提供适当的权限来解决该问题。