openForPublish を呼び出してパブリッシュ ストリームのリクエストでセッションを開くのに問題があり、CLOSED_LOGIN_FAILED 状態を受け取りました。ログイン ダイアログでキャンセルしようとすると、このセッション状態を受け取りました。CLOSED_LOGIN_FAILED 状態で再度 openForPublish を呼び出そうとすると、「セッション: 既に開いているセッションを開こうとしました。」という例外が発生しました。私が session.isOpened をチェックしたとき、私は FALSE で、isClosed は TRUE です。
これは私のコードです:
Session session = Session.getActiveSession();
if (session == null) {
Log.w("Facebook Session", "TopicShow object is null");
if (savedInstanceState != null) {
Log.w("Facebook Session", "TopicShow Restoring Session");
session = Session.restoreSession(activity, null, fbSessionStateCallback, savedInstanceState);
}
if (session == null) {
session = new Session(activity.getApplicationContext());
}
}
Session.setActiveSession(session);
Log.w("Facebook", "Session inital state when clicked " + session.getState().name());
Log.w("SessionState", "isOpen = " + !session.isOpened() + " isClosed = " + !session.isClosed());
if (!session.isOpened()) {
Log.w("Facebook", "openForRead " + session.getState().name());
/* Prevent it from getting error if no internet. */
OpenRequest request = new Session.OpenRequest(activity);
request.setLoginBehavior(SessionLoginBehavior.SUPPRESS_SSO);
request.setPermissions(Arrays.asList("publish_stream"));
request.setCallback(fbPublishRequestStateCallback);
isBlock = false;
session.openForPublish(request);
}
else if (session.isOpened()) {
Request request = Request.newMeRequest(session, graphUserCallback);
request.executeAndWait();
isBlock = true;
}