Вот случай:
Если я ранее предоставлял разрешения на чтение моему приложению через
LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("email"));
Затем, когда мне нужно поделиться, я запрашиваю разрешения на публикацию через:
LoginManager.getInstance().logInWithPublishPermissions(getActivity(), Arrays.asList("publish_actions"));
Все работает нормально, пока я не удалил разрешения для своего приложения в Интернете.
Если приложение было убито или остановлено, и мне нужно поделиться, я проверю, есть ли у меня разрешения:
if(userAuthorizedMyApp()){
LoginManager.getInstance().logInWithPublishPermissions(this, Arrays.asList("publish_actions"));
} else {
LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("email"));
}
Метод userAuthorizedMyApp() возвращает false (accessToken null):
private boolean userAuthorizedMyApp() {
boolean authorized;
AccessToken accessToken = AccessToken.getCurrentAccessToken();
if(DEBUG) Log.v(TAG, "accessToken [" + accessToken +"]");
if(accessToken != null){
Set<String> currentPermissions = accessToken.getPermissions();
authorized = currentPermissions.contains("public_profile");
} else {
authorized = false;
}
if(DEBUG) Log.v(TAG, "userAuthorizedMyApp[" + authorized +"]");
return authorized;
}
И я пытаюсь сделать обычный вход, как будто это был первый раз:
LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("email"));
И я получаю:
public void onError(FacebookException error)
onError, error {HttpStatus: -1, errorCode: 190, errorType: null, errorMessage: Ошибка проверки маркера доступа: пользователь не авторизовал приложение 123456789123456.}
Любые идеи, что я делаю неправильно?