Facebook API Выход из моего приложения, но не Facebook - PullRequest
6 голосов
/ 08 февраля 2012

Как мне выйти из системы, используя API Facebook, выйти из моего приложения (веб-сайт), но оставить меня на 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, она просто открывается и закрывается и ничего не делает, потому что я все еще подключен к Facebook. Я хочу, чтобы он перенаправил.

Но если при выходе из системы я также использую Facebook :: logoutUrl, он выводит меня из моего приложения И Фейсбука, а это не то, что мне нужно.

Ответы [ 5 ]

6 голосов
/ 23 июня 2015

Немного поздно, но может кому-то помочь.Вы можете отозвать разрешения для приложения, что фактически выводит их из вашего приложения.Вот код:

FB.api('/me/permissions', 'delete', function(response) {
    console.log(response.status); // true for successful logout.
});
6 голосов
/ 15 ноября 2013

Это работает для меня:

window.fbAsyncInit = function() {

FB.getLoginStatus(function(response) {

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


    });

});

}
3 голосов
/ 10 января 2013

Вы уверены, что хотите выйти только из своего приложения и не использовать 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-приложение от пользователя?»или что-то вместо этого или попробуйте ответ @ DMCS .. Почему?

1 голос
/ 08 февраля 2012

Вам нужно использовать destroySession для Facebook, чтобы сделать

www.example.com? Акт = выход из системы

<?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, чтобы сделать его перенаправленным.

0 голосов
/ 08 февраля 2012

Когда пользователь вошел в ваше приложение, отправьте HTTP-запрос DELETE на /me/permissions, используя свой текущий токен доступа. Это выведет их из вашего приложения, требуя повторной аутентификации, если они захотят поиграть еще. Также не забудьте уничтожить сессию php, используя обычный код очистки сессии php.

...