アプリにログインして、何かを共有できます。これには 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 が表示されるはずのときにまだ開いているため、セッションを無駄に開きます。
助けてください。