如何在Facebook应用程序中检查当前登录的用户?

时间:2013-08-16 09:17:39

标签: android facebook

当用户点击我的应用中的自定义按钮时,会在用户的Facebook墙上发布内容。我的问题是当安装Facebook应用程序并且用户第一次登录应用程序或用户登录facebook应用程序时。什么时候,我尝试注销并使用其他帐户登录并执行我的应用程序。该应用程序在第一个帐户的Facebook墙上发布,而不是第二个帐户。我如何检查登录facebook app的当前用户?

public void onCreateSMWDLoginFBByAccessToken() {
    Settings.addLoggingBehavior(LoggingBehavior.INCLUDE_ACCESS_TOKENS);

    Session session = Session.getActiveSession();
    if (session == null) {
        session = new Session(ShareFacebookActivity.this);

        Session.setActiveSession(session);
    }

    if (session.getState().equals(SessionState.CREATED_TOKEN_LOADED)) {
        openSessionForPublish(session);

    }
    onClickLoginFB();
}

public void openSessionForPublish(Session session) {

    Session.OpenRequest openRequest = new Session.OpenRequest(ShareFacebookActivity.this);

    if (openRequest != null) {
        openRequest.setDefaultAudience(SessionDefaultAudience.FRIENDS);
        openRequest.setPermissions(ConstantsFacebook.PERMISSIONS_PUBLISH);
        openRequest.setLoginBehavior(SessionLoginBehavior.SSO_WITH_FALLBACK);
        openRequest.setCallback(statusCallback);
        session.openForPublish(openRequest);
    }

}

private void onClickLoginFB() {
    Session session = Session.getActiveSession();

    if (!session.isOpened() && !session.isClosed()) {
        openSessionForPublish(session);
    } else {
        Session.openActiveSession(ShareFacebookActivity.this, true, statusCallback);
    }
}

public class SessionStatusCallback implements Session.StatusCallback {

    @Override
    public void call(Session session, SessionState state, Exception exception) {

        // REFRESH FACEBOOK STATE
        refreshStateSessionFB(session);
    }
}

private void refreshStateSessionFB(Session session) {
    if (session.isOpened()) {

        Request.executeMeRequestAsync(session, statusUserFB);
    }
}// end Method

public class SessionGraphUserStatusCallback implements Request.GraphUserCallback {

    @Override
    public void onCompleted(GraphUser user, Response response) {

        if (user != null) {
            publishContent();
        }
    }// end OnCompleted
}// end Class

2 个答案:

答案 0 :(得分:0)

您需要使用Facebook提供的LoginButton登录/注销用户。 Facebook SDK3.0中的LoginButton具有内置功能,可在用户登录后从登录更改为注销。

答案 1 :(得分:0)

你做不到。 Facebook应用程序和您的应用程序是完全独立的,因此当用户退出Facebook应用程序时,您的应用程序根本不知道。要知道的唯一方法是将用户从应用程序中注销(通过调用session.closeAndClearTokenInformation),然后再次尝试登录。

建议始终在帖子按钮旁边显示用户的个人资料图片/名称,这样点击按钮的人就会认识到这不是他们的个人资料图片,然后可以注销并以他们自己的身份登录。