我使用以下方法在应用程序中添加了Facebook和Google登录:
private LoginButton facebook; //package com.facebook.login.widget;
private SignInButton googleSignIn; //package com.google.android.gms.common;
两个按钮都可以使用,我想防止用户多次单击按钮(每次单击时都会发送另一个请求):
这两种情况在Google和Facebook API中的处理方式如下:
在Google登录中,有该设备的Google帐户列表,一旦按下该按钮,一旦用户选择了自己的帐户,我就无法捕获该事件以禁用该按钮
在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());
}
});
}
实现此目标的最佳实践是什么? 谢谢!
答案 0 :(得分:0)
如果要启动结果的意图,则可以将调用包装在条件块中,例如:
boolean requestSent = false;
if(!requestSent) {
Intent signInIntent = mGoogleSignInClient.getSignInIntent();
startActivityForResult(signInIntent, 101 );
requestSent = true;
} else {
//show a message
}