我可以登录到我的应用程序然后分享一些东西。这需要一个 OPENED 会话状态。但是,当我没有登录时,我想分享一些东西,我需要打开会话。我正在使用 ViewPager,例如,当我从一页转到另一页时,这段代码
Session.openActiveSession(getActivity(), true, new StatusCallback() {
@Override
public void call(Session session, SessionState state, Exception exception) {
}
});
是在代码的开头,然后会话变为活动状态,我自动登录,这是错误的!这就是我将此代码块放入 onClickListener 的原因,因此我只想在单击应用程序中的共享按钮时打开会话:
if (session != null && session.isOpened()) {
publishFeedDialog();
}
else {
Session.openActiveSession(getActivity(), true, new StatusCallback() {
@Override
public void call(Session session, SessionState state, Exception exception) {
}
});
publishFeedDialog();
}
private void publishFeedDialog() {
session = Session.getActiveSession();
Log.i("TAG", session.getState() + ""); //OPENING
WebDialog feedDialog = (
new WebDialog.FeedDialogBuilder(getActivity(),
Session.getActiveSession(),
params))
.setOnCompleteListener(new OnCompleteListener() {
@Override
public void onComplete(Bundle values,
FacebookException error) {
if (error == null) {
final String postId = values.getString("post_id");
if (postId != null) {
} else {
// User clicked the Cancel button
}
} else if (error instanceof FacebookOperationCanceledException) {
} else {
// Generic, ex: network error
}
}
})
.build();
feedDialog.show();
}
错误:
尝试使用未打开的会话。
所以我徒劳地打开了会话,因为当 WebDialog 应该出现时它仍然是 OPENING 。
请帮忙。