0

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

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
4

2 回答 2

0

你不能。Facebook 应用和你的应用是完全独立的,所以当用户退出 Facebook 应用时,你的应用毫无头绪。唯一知道的方法是将用户从您的应用程序中注销(通过调用 session.closeAndClearTokenInformation),然后再次尝试登录。

建议始终在您的发布按钮旁边显示用户的个人资料图片/名称,这样单击按钮的人会识别出这不是他们的个人资料图片,然后可以注销并以自己的身份登录。

于 2013-08-16T16:39:08.357 回答
0

您需要使用 Facebook 提供的 LoginButton 来登录/注销用户。Facebook SDK3.0 中的 LoginButton 内置了用户登录后从登录变为注销的功能。

于 2013-08-16T09:24:34.267 回答