我正在开发一个可让用户使用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:对于这样的故事,我只是需要你知道我想要达到的目标以及问题的起点。
谢谢任何可能导致解决方案!
当然这是有意的行为,否则我访问过的任何网站都可能使我退出FB,无论我是否希望这样做 - 因此它需要一个活动的用户访问令牌。 – CBroe
顺便说一句,让大量用户以频繁的方式登录非常有限的设备是不明智的 - 这很有可能触发Facebook的安全算法,这会让人觉得有些黑幕正在发生......并且可能会导致您的用户不得不回答额外的安全问题,在自己的帐户中遇到其他麻烦,直到您的应用被阻止。 – CBroe
是的,我从这一点看,这是正确的行为。 如果你把你的评论变成答案,我可以标记它!谢谢。 顺便说一句,完全放弃iPad的想法。 – Andreyco