Intereting Posts
Как скомпилировать код C ++ 14 для Android? Eclipse не создает папку .apt_generated для Butter Knife Имеется ли документация, когда Кинжал возвращается к отражению при инъекции зависимостей? System.MissingMethodException: метод «Android.Support.V4.Widget.DrawerLayout.AddDrawerListener» не найден Как настроить пользовательские шрифты жирным шрифтом Селектор, Layer-list и shape / bitmap в одном и том же xml Показать значок в панели действий / панели инструментов с помощью AppCompat-v7 21 Чтобы активность Android всегда использовалась в режиме ландшафта Как проверить, какая последняя версия зависимости используется в gradle Тег HTML5 не работает в Android Android: использование FEATURE_NO_TITLE с пользовательской ViewGroup оставляет место поверх окна Как преобразовать BitmapDescriptor в drawable в android для просмотра изображений Связывание сторонних libs (libs.a) с NDK Как создать подписанный файл APK с использованием интерфейса командной строки Cordova? Android Home As Up Индикатор имени файла или местоположения

Проблема с 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 предусмотрены статические активные методы сеанса, которые занимаются открытием новых экземпляров сеанса.