Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用facebook php sdk v5从facebook登录注销?_Php_Facebook_Facebook Graph Api_Login_Logout - Fatal编程技术网

如何使用facebook php sdk v5从facebook登录注销?

如何使用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

我从facebook登录整合了我的站点登录,并且我已经从facebook登录成功登录。我使用过facebook php sdk v5

当我点击“注销”按钮时,我想以编程方式注销,如果我在6小时后打开登录链接,我将面临另一个问题,它将自动登录

我想使会话过期。请检查我的代码,如果我做了错误的登录代码,请检查

我的代码:

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,并且此人之前已经登录到您的应用程序并接受了权限,则他们不必再次通过登录流,只需创建一个新会话。