Facebook API退出我的应用程序,但不是Facebook

时间:2012-02-08 07:37:36

标签: php javascript facebook facebook-login

如何使用Facebook的api登录我的应用程序(网站),但让我登录facebook.com?

这让我很好:

 window.fbAsyncInit = function()
{
        FB.init({
            appId      : '<?= APP_ID ?>',
            status     : true, 
            cookie     : true,
            xfbml      : true,
            oauth      : true,
        });

    FB.Event.subscribe('auth.login', function(response)
    {alert(response);
            window.location = 'http://reviewsie.com/accounts/facebook';
        });

    };

  (function(d)
{
        var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
        js = d.createElement('script'); js.id = id; js.async = true;
        js.src = "//connect.facebook.net/en_US/all.js";
        d.getElementsByTagName('head')[0].appendChild(js);
    }(document));

然后我点击我的网站上的注销,我将会话杀死到我的应用程序。然后,当你再次点击fb:login-button时,它只是打开和关闭,并没有做任何事情,因为我仍然连接到Facebook。我想让它重定向。

但是,如果我退出时我也使用Facebook :: logoutUrl它会将我从我的应用程序和Facebook中导出,这不是我想要的。

5 个答案:

答案 0 :(得分:6)

这对我有用:

window.fbAsyncInit = function() {

FB.getLoginStatus(function(response) {

    FB.api("/me/permissions", "delete", function(response){ 


    });

});

}

答案 1 :(得分:6)

有点晚但可能会帮助别人。您可以撤消应用程序权限,从而有效地将其从应用程序中注销。这是代码:

UIViewController

答案 2 :(得分:3)

如果您使用fb登录,是否确定只想注销您的应用,而不是fb?什么样的应用程序可能想要做这样的事情?为什么?这样做有什么好处?


但如果你真的想(黑客),请在index.php:

<?php
require 'init.php';    // general init
require 'init_fb.php'; // sets $fb_id if logged in to fb

if (isset($fb_id) and !isset($_SESSION['do_not_auto_login'])) {
    echo "<a href='/logout'>Logout</button>";
    include 'app.php';
    return;
}

if (isset($_SESSION['do_not_auto_login'])
     echo "<a href='/re_login'>FB Login</button>";
else include 'html_and_js_fb_login_code_and_button.php';

include 'startpage.php';
?>

并在logout.php中:

$_SESSION['do_not_auto_login'] = true;
// destroy-code

并在re_login.php中:

unset($_SESSION['do_not_auto_login']);
header("location: /"); // re-direct back to index.php

不完美,但效果有点好。希望你得到黑客!


但是,为什么呢?如果您认为您的用户不想回来,请询问“如何从用户中删除我的fb-app?”或者别的东西或尝试@DMCS的答案..为什么?

答案 3 :(得分:1)

您需要使用destroySession进行Facebook

www.example.com?act=logout

<?php
php sdk blah blah


if($_GET['act'] =='logout'){
    $facebook->destroySession(); 

}
$params = array(
 'scope' => 'read_stream, friends_likes',
 'redirect_uri' => 'https://www.myapp.com/post_login_page'
);

$loginUrl = $facebook->getLoginUrl($params);

?>

也许您需要设置param才能使其重定向。

答案 4 :(得分:0)

当用户登录您的应用时,使用他们当前的访问令牌向/me/permissions发送HTTP DELETE调用。这会将它们从您的应用中注销,要求他们重新进行身份验证,如果他们想要播放更多内容。还要确保使用正常的php会话清除代码来破坏php会话。