Проблема с Android Facebook

Я использовал следующий код для аутентификации Facebook, и он работает нормально, но когда я отменил аутентификацию и попытался снова аутентифицироваться, приложение разбилось, и журнал был вызван: java.lang.UnsupportedOperationException: Session: an attempt was made to open an already opened session.
На отладке я получил вот это

 {Session state:CREATED, token:{AccessToken token:ACCESS_TOKEN_REMOVED permissions:[]}, appId:xxxxxxxxxxxxxxx} 

Как я могу решить эту проблему. Пожалуйста, помогите мне. Спасибо заранее

 private void askFacebbokAuthentication() { Session session = Session.getActiveSession(); if (session.isOpened()) { facebook = true; if (!hasPublishPermission()) { session.requestNewPublishPermissions(new NewPermissionsRequest( MyActivity.this, PERMISSIONS)); } } else { Session.OpenRequest openRequest = null; openRequest = new Session.OpenRequest(MyActivity.this); if (openRequest != null) { openRequest.setDefaultAudience(SessionDefaultAudience.FRIENDS); if (!hasPublishPermission()) { openRequest.setPermissions(PERMISSIONS); } session.openForPublish(openRequest); } } } 

Solutions Collecting From Web of "Проблема с Android Facebook"

У меня тоже была такая же проблема, но я решил с этими строками. Насколько я знаю, мы не можем запросить сеанс для новых разрешений, которые уже открыты.

 Session session = new Session(this); Session.setActiveSession(session); session.openForRead(new Session.OpenRequest(this).setCallback(callback).setPermissions(Arrays.asList("your_permissions"))); 

Надеюсь, вы уже добавили строку ниже в onActivityResult()

 Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data); 

Если сессия не открыта и не закрыта, я думаю, что лучше Session.openActiveSession ()

Этот отрезанный файл скопирован – вставлен из примера проекта SDK для Facebook SessionLoginSample, LoginUsingActivityActivity # onClickLogin ()

 private void onClickLogin() { Session session = Session.getActiveSession(); if (!session.isOpened() && !session.isClosed()) { session.openForRead(new Session.OpenRequest(this).setCallback(statusCallback)); } else { Session.openActiveSession(this, true, statusCallback); } } 

Обратите внимание, что Session # openActiveSession () также создает сеанс под капотом, который в порядке. Из https://developers.facebook.com/docs/technical-guides/iossdk/session/#lifecycle :

Сессии можно открыть только один раз. Когда сеанс закрыт, он не может быть повторно открыт. Вместо этого необходимо создать новый сеанс. Типичным приложениям потребуется только один активный сеанс в любое время. В SDK Facebook предусмотрены статические активные методы сеанса, которые занимаются открытием новых экземпляров сеанса.