如何使用facebook php sdk v5从facebook登录注销?
我从facebook登录整合了我的站点登录,并且我已经从facebook登录成功登录。我使用过facebook php sdk v5 当我点击“注销”按钮时,我想以编程方式注销,如果我在6小时后打开登录链接,我将面临另一个问题,它将自动登录 我想使会话过期。请检查我的代码,如果我做了错误的登录代码,请检查 我的代码:如何使用facebook php sdk v5从facebook登录注销?,php,facebook,facebook-graph-api,login,logout,Php,Facebook,Facebook Graph Api,Login,Logout,我从facebook登录整合了我的站点登录,并且我已经从facebook登录成功登录。我使用过facebook php sdk v5 当我点击“注销”按钮时,我想以编程方式注销,如果我在6小时后打开登录链接,我将面临另一个问题,它将自动登录 我想使会话过期。请检查我的代码,如果我做了错误的登录代码,请检查 我的代码: session_start(); require_once __DIR__ . '/src/Facebook/autoload.php'; $fb = new Facebook\F
session_start();
require_once __DIR__ . '/src/Facebook/autoload.php';
$fb = new Facebook\Facebook([
'app_id' => 'app_id',
'app_secret' => 'app_secret',
'default_graph_version' => 'v2.5',
]);
$helper = $fb->getRedirectLoginHelper();
$permissions = ['email'];
try {
if (isset($_SESSION['facebook_access_token'])) {
$accessToken = $_SESSION['facebook_access_token'];
} else {
$accessToken = $helper->getAccessToken();
}
} catch(Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
if (isset($accessToken)) {
if (isset($_SESSION['facebook_access_token'])) {
$fb->setDefaultAccessToken($_SESSION['facebook_access_token']);
} else {
// getting short-lived access token
$_SESSION['facebook_access_token'] = (string) $accessToken;
// OAuth 2.0 client handler
$oAuth2Client = $fb->getOAuth2Client();
// Exchanges a short-lived access token for a long-lived one
$longLivedAccessToken = $oAuth2Client->getLongLivedAccessToken($_SESSION['facebook_access_token']);
$_SESSION['facebook_access_token'] = (string) $longLivedAccessToken;
// setting default access token to be used in script
$fb->setDefaultAccessToken($_SESSION['facebook_access_token']);
}
// redirect the user back to the same page if it has "code" GET variable
if (isset($_GET['code'])) {
header('Location: ./');
}
// getting basic info about user
try {
$profile_request = $fb->get('/me?fields=about,bio,birthday,email,gender,first_name,last_name,name,timezone,picture.width(200)');
$profile = $profile_request->getGraphNode()->asArray();
} catch(Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
echo 'Graph returned an error: ' . $e->getMessage();
session_destroy();
// redirecting user back to app login page
header("Location: ./");
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
// printing $profile array on the screen which holds the basic info about user
//print_r($profile);
echo "<br> Logged in as ".$profile['email'];
echo $_SESSION['facebook_access_token'];
// Now you can redirect to another page and use the access token from $_SESSION['facebook_access_token']
} else {
// replace your website URL same as added in the developers.facebook.com/apps e.g. if you used http instead of https and you used non-www version or www version of your website then you must add the same here
$loginUrl = $helper->getLoginUrl('http://www.example.com/fbapp/index.php', $permissions);
echo "<script>window.top.location.href='".$loginUrl."'</script>";
//echo '<a href="' . $loginUrl . '">Log in with Facebook!</a>';
}
$logoutUrl = 'https://www.facebook.com/logout.php?next=http://www.example.com/fbapp/index.php&access_token=' . $_SESSION['facebook_access_token'];
echo "<a href='" . $logoutUrl . "'>Logout with Facebook!</a>";
session_start();
需要一次目录/src/Facebook/autoload.php';
$fb=新Facebook\Facebook([
“应用程序id”=>“应用程序id”,
“应用程序机密”=>“应用程序机密”,
“默认图形版本”=>“v2.5”,
]);
$helper=$fb->getRedirectLoginHelper();
$permissions=['email'];
试一试{
如果(isset($\会话['facebook\访问\令牌])){
$accessToken=$\会话['facebook\访问\令牌'];
}否则{
$accessToken=$helper->getAccessToken();
}
}捕获(Facebook\Exceptions\FacebookResponseException$e){
//当图形返回错误时
echo“图形返回错误:”。$e->getMessage();
出口
}捕获(Facebook\Exceptions\FacebookSDKException$e){
//验证失败或其他本地问题时
echo“Facebook SDK返回错误:”。$e->getMessage();
出口
}
if(isset($accessToken)){
如果(isset($\会话['facebook\访问\令牌])){
$fb->setDefaultAccessToken($_会话['facebook_访问_token']);
}否则{
//获取短期访问令牌
$\u会话['facebook\u访问令牌']=(字符串)$accessToken;
//OAuth2.0客户端处理程序
$oAuth2Client=$fb->getOAuth2Client();
//将短期访问令牌交换为长期访问令牌
$longLivedAccessToken=$oAuth2Client->getLongLivedAccessToken($\会话['facebook\访问\令牌]);
$\u会话['facebook\u访问令牌']=(字符串)$longLivedAccessToken;
//设置脚本中要使用的默认访问令牌
$fb->setDefaultAccessToken($_会话['facebook_访问_token']);
}
//如果用户有“code”GET变量,则将其重定向回同一页面
如果(isset($_GET['code'])){
标题(位置:./);
}
//获取有关用户的基本信息
试一试{
$profile\u request=$fb->get('/me?字段=关于、个人简历、生日、电子邮件、性别、姓、名、时区、图片宽度(200)');
$profile=$profile_请求->getGraphNode()->asArray();
}捕获(Facebook\Exceptions\FacebookResponseException$e){
//当图形返回错误时
echo“图形返回错误:”。$e->getMessage();
会话_destroy();
//将用户重定向回应用程序登录页面
标题(“位置:./”;
出口
}捕获(Facebook\Exceptions\FacebookSDKException$e){
//验证失败或其他本地问题时
echo“Facebook SDK返回错误:”。$e->getMessage();
出口
}
//在屏幕上打印$profile数组,其中包含有关用户的基本信息
//打印(配置文件);
echo“
以“$profile['email']的身份登录;
echo$\会话['facebook\访问\令牌'];
//现在,您可以重定向到另一个页面并使用来自$\u会话['facebook\u access\u token']的访问令牌
}否则{
//将您的网站URL替换为developers.facebook.com/apps中添加的URL,例如,如果您使用http而不是https,并且您的网站使用了非www版本或www版本,则必须在此处添加相同的URL
$loginUrl=$helper->getLoginUrl('http://www.example.com/fbapp/index.php“,$permissions);
echo“window.top.location.href=”$loginUrl。“”;
//回声';
}
$logoutUrl='1https://www.facebook.com/logout.php?next=http://www.example.com/fbapp/index.php&access_token=' . $_会话['facebook_访问_令牌'];
回声“;
<>代码>为了记录用户,你应该考虑在<代码>脸谱网< /Cord>对象上使用<代码> GETLogouTurl()方法。就像执行getRedirectLoginHelper()
方法一样,您可以调用$fb->getLogoutUrl()
。如果您在6小时后使用登录URL,并且此人之前已经登录到您的应用程序并接受了权限,则他们不必再次通过登录流,只需创建一个新会话。