当用户点击我的应用中的自定义按钮时,会在用户的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
答案 0 :(得分:0)
您需要使用Facebook提供的LoginButton登录/注销用户。 Facebook SDK3.0中的LoginButton具有内置功能,可在用户登录后从登录更改为注销。
答案 1 :(得分:0)
你做不到。 Facebook应用程序和您的应用程序是完全独立的,因此当用户退出Facebook应用程序时,您的应用程序根本不知道。要知道的唯一方法是将用户从应用程序中注销(通过调用session.closeAndClearTokenInformation),然后再次尝试登录。
建议始终在帖子按钮旁边显示用户的个人资料图片/名称,这样点击按钮的人就会认识到这不是他们的个人资料图片,然后可以注销并以他们自己的身份登录。