防止用户在Facebook和Google登录按钮上单击两次

时间:2019-01-03 14:28:38

标签: android facebook google-signin

我使用以下方法在应用程序中添加了Facebook和Google登录:

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

两个按钮都可以使用,我想防止用户多次单击按钮(每次单击时都会发送另一个请求):

这两种情况在Google和Facebook API中的处理方式如下:

  1. 在Google登录中,有该设备的Google帐户列表,一旦按下该按钮,一旦用户选择了自己的帐户,我就无法捕获该事件以禁用该按钮

  2. 在Facebook登录中,它由注册在Facebook包中的回调处理(我无法访问),并且一旦单击,我也无法禁用该按钮。

编辑: 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 :(得分:0)

如果要启动结果的意图,则可以将调用包装在条件块中,例如:

boolean requestSent = false;

if(!requestSent) {
    Intent signInIntent = mGoogleSignInClient.getSignInIntent();     
    startActivityForResult(signInIntent, 101 );
    requestSent = true;
} else {
    //show a message
}