javascript - 如何仅注销我的 FB 应用程序而不是我的 Facebook 帐户?

标签 javascript php facebook facebook-graph-api

我在我的网络应用程序上使用 facebook javascript sdk。我正在使用 graph api 登录我的应用程序。当我从我的应用程序注销时,我的应用程序被注销,我的 Facebook 帐户也被注销。

如何仅注销我的应用程序而不是我的 Facebook 帐户?

如果有人找到解决方案,请帮助我。

代码:

<script type="text/javascript">     

    var button;
    var userInfo;

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

       showLoader(true);

       function updateButton(response) {
            button       =   document.getElementById('fb-auth');
            userInfo     =   document.getElementById('user-info');
            userdata =   document.getElementById('user-data');
            if (response.authResponse) {
                //user is already logged in and connected
                FB.api('/me', function(info) {
                    login(response, info);
                });

                button.onclick = function() {
                    FB.logout(function(response) {
                        logout(response);
                    });
                };
            } else {
                //user is not connected to your app or logged out
                button.innerHTML = 'Login';
                button.onclick = function() {
                    showLoader(true);
                    FB.login(function(response) {
                        if (response.authResponse) {
                            FB.api('/me', function(info) {
                                login(response, info);
                            });    
                        } else {
                            //user cancelled login or did not grant authorization
                            showLoader(false);
                        }
                    },                                    {scope:'email,user_birthday,status_update,publish_stream,user_about_me'});   
                }
            }
        }

        // run once with current status and whenever the status changes
        FB.getLoginStatus(updateButton);
        FB.Event.subscribe('auth.statusChange', updateButton);  
    };
    (function() {
        var e = document.createElement('script'); e.async = true;
        e.src = document.location.protocol 
            + '//connect.facebook.net/en_US/all.js';
        document.getElementById('fb-root').appendChild(e);
    }());


    function login(response, info){
        if (response.authResponse) {
            var accessToken                                 =   response.authResponse.accessToken;

            userInfo.innerHTML                             = '<img src="https://graph.facebook.com/' + info.id + '/picture">' + info.name
                                                             + "<br /> Your Access Token: " + accessToken;


    button.innerHTML                               = 'Logout';
            showLoader(false);
            document.getElementById('other').style.display = "block";

        }
    }

    function logout(response){
        userInfo.innerHTML                             =   "";
        document.getElementById('debug').innerHTML     =   "";
        document.getElementById('other').style.display =   "none";
        showLoader(false);
    }

     //stream publish method
     function streamPublish(name, description, hrefTitle, hrefLink, userPrompt){
        showLoader(true);
        FB.ui(
        {
            method: 'stream.publish',
            message: '',
            attachment: {
                name: name,
                caption: '',
                description: (description),
                href: hrefLink
            },
            action_links: [
                { text: hrefTitle, href: hrefLink }
            ],
            user_prompt_message: userPrompt
        },
        function(response) {
            showLoader(false);
        });

    }
    function showStream(){
        FB.api('/me', function(response) {
            //console.log(response.id);
            streamPublish();
        });
    }           

  function share(){
        showLoader(true);
        var share = {
            method: 'stream.share',
            u: 'http://www.appovative.com/'
        };

        FB.ui(share, function(response) { 
            showLoader(false);
            console.log(response); 
        });
    }



    function setStatus(){
        showLoader(true);

        status1 = document.getElementById('status').value;
        FB.api(
          {
            method: 'status.set',
            status: status1
          },
          function(response) {
            if (response == 0){
                alert('Your facebook status not updated. Give Status Update        Permission.');
            }
            else{
                alert('Your facebook status updated');
            }
            showLoader(false);
          }
        );
    }

    function showLoader(status){
        if (status)
            document.getElementById('loader').style.display = 'block';
        else
            document.getElementById('loader').style.display = 'none';
    }

</script>

最佳答案

他们是在 FB 对象中定义的函数,使用它来销毁 FB session ,

使用(通过 PHP)

$facebook->destroySession();

或者

FB API 提供了一个 logoutURL,它将让用户退出当前的 Facebook 帐户。

你可以像这样使用它,

$facebook = new Facebook($config);
$params = array('next' => 'www.yousite.com/test.php' );
$logoutURL = $facebook->getLogoutUrl($params);

***注意 建议还添加以下代码(以防万一您不希望用户退出您的网站)

//remove PHPSESSID from browser
if ( isset( $_COOKIE[session_name()] ) )
    setcookie( session_name(), '', time()-7000000, '/' );
//clear session from globals
    $_SESSION = array();

通过JS使用自定义事件 引用:(FB.logout() called without an access token. javascript sdk)

function fbLogoutUser() {
    FB.getLoginStatus(function(response) {
        if (response && response.status === 'connected') {
            FB.logout(function(response) {
                document.location.reload();
            });
        }
    });
}

关于javascript - 如何仅注销我的 FB 应用程序而不是我的 Facebook 帐户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22032405/

相关文章:

javascript - 父元素的哪个子元素是子元素——这是一个属性吗?

php - Symfony:无法启用自定义存储库

php - 通过XAMPP使用PHP连接到MySQL时,即使授予所有特权,访问也会被拒绝

javascript - 更改将在 mqtt 连接上

javascript - 在 session 中存储数组?我该怎么做?

javascript - 增加一个字符串。 (JS 或 PHP)

ios - 不使用 Storyboard 的 SlideMenu Like Facebook

ios - 如何在我的 iOs 应用程序中显示 AppStore 的描述页面?

javascript - 未询问 Facebook Javascript SDK 扩展权限/未显示注销按钮

c# - 如何删除危险字符(即脚本标签)?