Правильный способ выхода из системы с помощью react-native-fbsdk

Я использую react-native-fbsdk для входа в систему через facebook в моем приложении, основанном на реакции.
Я вызываю LoginManager.logOut() для выхода из системы: на самом деле он не выходит из системы должным образом, так как в следующий раз, когда я пытаюсь войти, он не запрашивает у меня логин/пароль снова, поэтому Я могу войти только под одной учетной записью. Я не могу найти способ войти в другую учетную запись facebook.

Этот парень (react-native-fbsdk: Как правильно выйти из Facebook?) возникла та же проблема, и, похоже, она не нашла решения.

Один трюк на iOS — перейти в сафари, а затем выйти из мобильного веб-сайта Facebook. Однако на андроиде это не работает :(

ИЗМЕНИТЬ:

Вот мой код входа в facebook:

function login() {
  return LoginManager.logInWithReadPermissions(FACEBOOK_PERMISSIONS)
    .then(result => {
      if (result.isCancelled) {
        throw new Error("Login canceled");
      }
      return AccessToken.getCurrentAccessToken();
    })
    .then(({ accessToken }) => accessToken);
}

Видео выхода/входа: https://d3vv6lp55qjaqc.cloudfront.net/items/132L2U1p383E1y0l2l2v/Screen%20Recording%202018-10-31%20at%2002.52%20PM.mov


person httpete    schedule 29.07.2018    source источник
comment
Вы нашли решение?   -  person zagoa    schedule 02.09.2018
comment
@zarnifoulette Не решение, а хак: если вместо этого вы используете веб-поведение, оно снова запрашивает вход в систему. const webLoginBehavior = Platform.OS === "ios" ? "web" : "WEB_ONLY"; LoginManager.setLoginBehavior(webLoginBehavior);   -  person httpete    schedule 18.10.2018
comment
Я нашел решение, на самом деле вам нужно сделать GraphRequest, если вы хотите выйти из системы. Я напишу для вас правильное решение.   -  person zagoa    schedule 19.10.2018
comment
Я забыл вам ответить, но да, у меня такая же проблема. На данный момент для меня это не проблема. Но если вы найдете решение, я буду рад услышать его :)   -  person zagoa    schedule 26.11.2018


Ответы (2)


Итак, я нашел это решение, это не взлом, а правильный способ выхода из Facebook. Вам нужно создать GraphRequest, чтобы запросить удаление разрешений. Ниже код, я надеюсь, что это поможет вам. Я тестировал его на Android и IOS, и это работает как шарм.

    FBLogout = (accessToken) => {
        let logout =
            new GraphRequest(
                "me/permissions/",
                {
                    accessToken: accessToken,
                    httpMethod: 'DELETE'
                },
                (error, result) => {
                    if (error) {
                        console.log('Error fetching data: ' + error.toString());
                    } else {
                        LoginManager.logOut();
                    }
                });
        new GraphRequestManager().addRequest(logout).start();
    };
person zagoa    schedule 19.10.2018
comment
Он выходит из системы, но когда я пытаюсь войти снова, он не запрашивает адрес электронной почты или пароль, я могу только повторно войти в систему с тем же пользователем. :( - person httpete; 20.10.2018
comment
Не могли бы вы показать мне несколько скриншотов и ваш код для входа? - person zagoa; 29.10.2018
comment
Привет, ребята. @zarnifoulette какие-нибудь решения для этого? Я попробовал предложение запроса графа выше, но, как говорит httpete, оно не запрашивает никакого подтверждения со второй попытки. - person honor; 03.04.2019
comment
Привет, ребята, у меня есть сообщение об этом на github, вы можете следить за ним здесь github .com/facebook/react-native-fbsdk/issues/507 - person zagoa; 11.04.2019
comment
@zagoa Спасибо, что открыли тему. Я последовал за этим с оттенком заслуженной агрессии. - person Ash; 17.05.2019

Проблема не в react-native-fbsdk, а в Facebook или браузере, через который пользователь входит в систему, чтобы подключиться к вашему приложению, причина в том, что каждый раз, когда ваше приложение получает доступ к логину Facebook через браузер или приложение Facebook, где пользователь -аккаунт уже вошел в систему, поэтому он не показывает поля имени пользователя или пароля.

Чтобы решить эту проблему, пользователь должен выйти из браузера или Facebook, через которые он/она вошел в ваше приложение (изначально для разрешения приложения), поэтому, когда пользователь возвращается в ваше приложение и выбирает Опция входа в Facebook, предполагающая, что пользователь также вышел из вашего приложения, тогда он/она может увидеть, как оно перенаправляется на страницу входа в Facebook или браузер с полями имени пользователя и пароля.

person Vidya Sairam    schedule 02.07.2020