2014-05-01 62 views
1

我正在开发一个可让用户使用Facebook登录的Web应用程序。
的流程是:
1.点击登录与FB
2.登录FB
3.重定向回Web应用程序从Facebook注销时遇到的问题

出于安全的原因(应用程序将要在iPad上运行在客户商店中)我需要在从FB接收到响应后立即从Facebook注销用户 - 该应用不再与FB API交互)。

用户登录到FB之后,将出现一个批准对话框,它可以让用户
1.到应用授予访问权限
2.拒绝访问该应用

然后,用户被重定向到该应用,其中响应被处理。

public function facebook() 
{ 
    try { 
     $fbUser = Faceoff::me(); 
     $user = UserCreator::withProfile($fbUser); 
     Auth::login($user); 

     $url = Faceoff::getLogoutUrl(['next' => 'url to protected area']); 
    } catch (\Exception $e) { 
     $url = Faceoff::getLogoutUrl(['next' => 'url to login page']); 
    } 

    Faceoff::destroySession(); 
    return Redirect::to($url); 
} 

如果用户授予访问执行try块中,如果用户拒绝访问,转而执行catch块和注销URL与适当next参数被生成。
用户将被重定向到该注销URL。 目前为止这么好。

问题是:如果用户没有授予对应用程序的访问权限,我无法从FB注销用户。
但我可以,如果访问被授予。

有没有解决方案,或这是打算的行为?

PS-1:Faceoff只是Laravel的包装。
PS-2:对于这样的故事,我只是需要你知道我想要达到的目标以及问题的起点。

谢谢任何​​可能导致解决方案!

+1

当然这是有意的行为,否则我访问过的任何网站都可能使我退出FB,无论我是否希望这样做 - 因此它需要一个活动的用户访问令牌。 – CBroe

+0

顺便说一句,让大量用户以频繁的方式登录非常有限的设备是不明智的 - 这很有可能触发Facebook的安全算法,这会让人觉得有些黑幕正在发生......并且可能会导致您的用户不得不回答额外的安全问题,在自己的帐户中遇到其他麻烦,直到您的应用被阻止。 – CBroe

+0

是的,我从这一点看,这是正确的行为。 如果你把你的评论变成答案,我可以标记它!谢谢。 顺便说一句,完全放弃iPad的想法。 – Andreyco

回答

1

问题是:如果用户没有授予对应用程序的访问权限,我无法从FB注销用户。 但我可以,如果访问被授予。

有没有解决方案,或这是打算的行为?

当然,这是预期的行为,否则网站我访问可以登录我出去FB的,我是希望这样的事情发生或不 - 而为此它需要一个活跃的用户访问令牌。 。


而且顺便说一句,这不是明智的,有大量用户的登录上一组非常有限的频繁时尚的设备 - 这是非常有可能引发Facebook的安全算法,会觉得有什么黑幕正在发生......并可能导致用户不得不回答额外的安全问题,在其他问题上遇到自己的帐户,直到您的应用被阻止。