У меня возникли проблемы при попытке получить дополнительное разрешение «publish_action».
Я предполагаю, что пользователь уже вошел в систему через facebook, поэтому основные разрешения предоставлены. Тогда у меня есть этот код (из моего фрагмента):
List<String> permissionsRequested = Arrays.asList("publish_actions");
List<String> permissionsActual = session.getPermissions();
if (!isSubsetOf(permissionsRequested, permissionsActual)) {
pendingPublishReauthorization = true;
Session.NewPermissionsRequest newPermissionsRequest = new Session
.NewPermissionsRequest(this, permissionsRequested);
session.requestNewPublishPermissions(newPermissionsRequest);
return;
}
Судя по отладке, после того, как пользователь предоставил разрешение, управление переходит к onActivityResult, где, согласно документам facebook, у меня есть
super.onActivityResult(requestCode, resultCode, data);
facebookUiHelper.onActivityResult(requestCode, resultCode, data);
uiHelper также правильно (согласно документам) используется во всех этих методах onResume и onDestroy.
В onCreate у меня есть
super.onCreate(savedInstanceState);
facebookUiHelper = new UiLifecycleHelper(getActivity(), fbSessionCallback);
facebookUiHelper.onCreate(savedInstanceState);
где fbSessionCallback переопределил метод call()
, который вызывает мой onFbSessionRestore()
:
if (pendingPublishReauthorization &&
state.equals(SessionState.OPENED_TOKEN_UPDATED)) {
pendingPublishReauthorization = false;
// do things with my new session, updated with granted permission. e.g. post to fb.
}
Проблема в том, что
- onActivityResult выполняется, но после этого обратный вызов никогда не вызывался, поэтому переопределенный вызов() не будет выполняться, как и onFbSessionCallback.
- Если я попытаюсь опубликовать снова (начать все с нуля) после этого - он снова получит сеанс без предоставленного разрешения, попытается запросить его, а затем выйдет исключение facebook о ожидающем разрешении newPublishRequest, бла-бла
Может ли кто-нибудь помочь настроить рабочий процесс из onActivityResult и более поздних версий? Я читаю документы facebook и склонен обвинять их в том, что они написаны плохо. Может это я просто тупой... :(((