Запретить пользователю дважды нажимать на Facebook и кнопку входа в Google - PullRequest
0 голосов
/ 03 января 2019

Я добавил Facebook и Google, чтобы войти в мое приложение, используя:

private LoginButton facebook; //package com.facebook.login.widget;
private SignInButton googleSignIn; //package com.google.android.gms.common;

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

Оба случая обрабатываются в API Google и Facebook следующим образом:

  1. При входе в Google есть список учетных записей Google устройства, и после нажатия я не могу поймать это событие, чтобы отключить кнопку, как только пользователь выбрал свою учетную запись

  2. При входе в Facebook он обрабатывается обратным вызовом, зарегистрированным в пакете Facebook (к которому у меня нет доступа), и я также не могу отключить кнопку после нажатия.

Edit: Код Facebook:

private void ActivateFacebook() {
        FacebookSdk.sdkInitialize(getApplicationContext());
        callbackManager = CallbackManager.Factory.create();
        facebook = (LoginButton) rootView.findViewById(R.id.fb);
        ((LoginButton) facebook).setReadPermissions("email");
        ((LoginButton) facebook).setFragment(this);

        ((LoginButton) facebook).registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                onFacebookLogin(loginResult);
            }

            @Override
            public void onCancel() {}

            @Override
            public void onError(FacebookException error) {
                Log.d(TAG, error.getMessage());
            }
        });
    }

Какова наилучшая практика в достижении этого? Спасибо!

1 Ответ

0 голосов
/ 03 января 2019

Если вы начинаете намерение для результата, вы можете заключить вызов в условный блок, например:

boolean requestSent = false;

if(!requestSent) {
    Intent signInIntent = mGoogleSignInClient.getSignInIntent();     
    startActivityForResult(signInIntent, 101 );
    requestSent = true;
} else {
    //show a message
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...