Изменить учетную запись Facebook / полностью выйти из системы, используя Firebase и Android - PullRequest
0 голосов
/ 11 ноября 2018

Я не могу найти решение, которое решает мою проблему.

Я использую Firebase и Facebook, чтобы подписаться на мое приложение.

Когда я впервые регистрируюсь в своем приложении, я получаю следующий экран:

Первый экран входа в Facebook

Я выхожу из Firebase и Facebook, используя следующие строки кода:

FirebaseAuth.getInstance().signOut();
LoginManager.getInstance().logOut();

Когда я пытаюсь после этого снова войти в Facebook, я получаю следующий экран:

Второй экран входа в Facebook

Я могу продолжить только ту учетную запись, которую использовал ранее. Я хочу вернуться на первый экран, где мне нужно ввести E-Mail пароль, чтобы я мог войти с другой учетной записью Facebook, если захочу.

В Stackoverflow я нашел следующий многообещающий код:

FacebookSdk.sdkInitialize(getApplicationContext());
    if (AccessToken.getCurrentAccessToken() != null) {
        new GraphRequest(AccessToken.getCurrentAccessToken(), "/me/permissions/", null, HttpMethod.DELETE, new GraphRequest.Callback() {
            @Override
            public void onCompleted(GraphResponse graphResponse) {
                AccessToken.setCurrentAccessToken(null);
                LoginManager.getInstance().logOut();
            }
        }).executeAsync();
    }

Но это решило и не мою проблему.

После этого я получаю следующий экран:

Facebook альтернативный второй экран входа в систему

Я был бы очень благодарен за любую помощь и извиняюсь за любые ошибки на английском языке.

1 Ответ

0 голосов
/ 13 декабря 2018

Используйте приведенный ниже код, прежде чем нажимать на кнопку входа в Facebook

    accessTokenTracker = new AccessTokenTracker() {
        @Override
        protected void onCurrentAccessTokenChanged(AccessToken oldAccessToken, AccessToken currentAccessToken) {
            accessTokenTracker.stopTracking();
            DebugLog.infoLog("Token Changed Called");
            if (currentAccessToken == null) {
              LoginManager.getInstance().logInWithReadPermissions(mActivity, Arrays.asList(permissionList));;
            }
        }
    };
    AccessToken.refreshCurrentAccessTokenAsync();

После кода выше просто вызовите код входа в систему, как указано ниже (используйте обработчик для вызова кода ниже с временем ожидания 1 миллисекунды):

LoginManager.getInstance().logInWithReadPermissions(mActivity, Arrays.asList(permissionList));
...