我有一个申请要求通过Facebook注册,但在用户可以进行注册之前,系统应首先确定是否有活动会话。如果用户登录 facebook ,则应自动注销以重新开始。
但这里是我被困的地方。 SDK只允许用户从Facebook注销,如果他已连接到您的应用程序。它使用应用程序的访问令牌。但是,如果他仍未注册您的应用程序怎么办?他们的退出意味着从你的应用程序退出,而不是真正从Facebook登出。
我的要求:
1. 如何从Facebook退出。
2. 如何清除浏览器Cookie?
不是针对特定的应用,而是整个facebook会话。
答案 0 :(得分:1)
[来自评论]但是要使用getLogoutUrl()函数,用户必须连接到您的应用程序。我需要的是从整个Facebook注销,而不仅仅是从应用程序
如果用户已连接到您的应用,那么getLogoutUrl
方法提供的网址就是这样做 - 将用户从您的应用中退出(网络应用)和 .COM。
如果用户不已连接到您的应用,但您没有活动的用户访问令牌 - 然后无法退出Facebook。显而易见的原因是,如果是这样的话,我访问的每个网站都会以“偷渡”的方式将我从Facebook中注销 - 没有我积极地想要这样做,所以人们会很快生气。
如果用户登录到Facebook,则应自动注销以重新开始。
如果这是一个安全考虑因素,那么您实际上正在寻找re-authentication,这可以使用auth_type
参数来完成,引自docs:
在安全性非常重要的应用中,您可能需要仔细检查某人的身份 - 可能是在他们在应用内购买之前,或者使用它来访问某些敏感的个人数据。
为了防止用户离开设备或中间人劫持用户会话的情况,重新身份验证会强制某人重新输入他们的Facebook密码,然后才能继续使用你的应用程序。
请注意使用服务器端 Auth流程 - 因为在客户端流程中,使用JS SDK,存在允许用户绕过重新输入密码的错误只需关闭仍处于打开状态的弹出窗口:https://developers.facebook.com/bugs/248632218597467(已分配优先级:高,但仍然只收到“我们将跟进”尚未回复。)
答案 1 :(得分:0)
使用logout.php网址。
https://developers.facebook.com/docs/reference/php/facebook-getLogoutUrl/
基本上,
http://facebook.com/logout.php?next=YOUR_NEXT_URL_FOR_LOGOUT&access_token=USER_TOKEN
答案 2 :(得分:0)
1)使用
从Facebook注销facebook=>getLogoutUrl();
2)使用以下方式清除会话:
$facebook->destroySession();
示例:
<a href="logout.php">Log Out</a>
logout.php页面代码如下:
<?php
require 'facebook.php';
$facebook->destroySession();
header( "location:index.php" );
?>