使用Android Studio&;时出现登录错误;火基

使用Android Studio&;时出现登录错误;火基,android,android-layout,android-studio,firebase-realtime-database,facebook-login,Android,Android Layout,Android Studio,Firebase Realtime Database,Facebook Login,在Android Studio中构建apk后,我的应用程序停止在登录页面。我有3种登录方法:Facebook、Google和guest 当我单击这些方法中的任何一个时,都不会发生任何事情 我错了: 登录活动: public class SignInActivity extends AppCompatActivity implements GoogleApiClient.OnConnectionFailedListener { private static final int RC_SI

在Android Studio中构建apk后,我的应用程序停止在登录页面。我有3种登录方法:Facebook、Google和guest

当我单击这些方法中的任何一个时,都不会发生任何事情

我错了:

登录活动:

public class SignInActivity extends AppCompatActivity implements GoogleApiClient.OnConnectionFailedListener {

    private static final int RC_SIGN_IN = 9001;
    private static String TAG = "SignInActivity:";
    @Bind(R.id.sign_in_button)
    Button signInGoogle;
    @Bind(R.id.sign_in_anon)
    Button signInAnonym;
    @Bind(R.id.coordinator)
    RelativeLayout vCoordinatorLayout;

    @Bind(R.id.sign_in_button_fb)
    Button signInFacebook;

    ProgressDialog mProgressDialog;

    private FirebaseAuth mFAuth;
    private GoogleApiClient mGoogleApiClient;
    private FirebaseAuth.AuthStateListener mAuthStateListener;
    private FirebaseUser mFUser;
    private CallbackManager callbackManager;
    AuthCredential credential;
    @Override
    protected void attachBaseContext(Context newBase) {
        super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase));
    }

    private void setupWindowAnimations() {
        Explode slide;
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
            slide = new Explode();
            slide.setDuration(1000);
            getWindow().setExitTransition(slide);
        }
    }

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_activity_sign_in);

        SharedPreferences settings = getSharedPreferences("firstTime", MODE_PRIVATE);
        boolean firstTime = settings.getBoolean("first_launch", true); //0 is the default valu

        if(firstTime){
            SharedPreferences.Editor editor = settings.edit();
            editor.putBoolean("first_launch", false);
            editor.apply();
        }

        ButterKnife.bind(this);
        setupWindowAnimations();

        mFAuth = FirebaseAuth.getInstance();

        mProgressDialog = new ProgressDialog(this);
        mProgressDialog.setMessage(getString(R.string.signing_in));
        mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);

        FacebookSdk.sdkInitialize(this.getApplicationContext());
        callbackManager = CallbackManager.Factory.create();
        LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                handleFacebookAccessToken(loginResult.getAccessToken());
            }

            @Override
            public void onCancel() {
            }

            @Override
            public void onError(FacebookException error) {
                Toast.makeText(getApplicationContext(), "" + error.getMessage(), Toast.LENGTH_LONG).show();
                alertLoginFailed("facebook");
            }
        });

        // Configure Google Sign In
        GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestIdToken(getString(R.string.default_web_client_id))
                .requestEmail()
                .build();

        mGoogleApiClient = new GoogleApiClient.Builder(this)
                .enableAutoManage(this, this)
                .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
                .build();

        mAuthStateListener = new FirebaseAuth.AuthStateListener() {
            @Override
            public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
                mFUser = firebaseAuth.getCurrentUser();
                if (mFUser != null) {
                    Intent intent = new Intent(SignInActivity.this, MainActivity.class);
                    intent.putExtra("prov", prov);
                    startActivity(intent);
                    SignInActivity.this.finish();
                } else {
                    Log.d(Constants.TAG_PARENT, TAG + "onAuthStateChanged:userLogout");
                }
            }
        };
    }

    private void handleFacebookAccessToken(AccessToken token) {
        Log.d(TAG, "handleFacebookAccessToken:" + token);
        mProgressDialog.show();
        credential = FacebookAuthProvider.getCredential(token.getToken());
        mFAuth.signInWithCredential(credential)
                .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if (!task.isSuccessful()) {
                            Log.w(Constants.TAG_PARENT, TAG + "signInWithCredential", task.getException());
                            showToast(getString(R.string.auth_failed));
                        }
                        prov = "Facebook";
                        mProgressDialog.dismiss();

                    }
                });
    }

    @OnClick(R.id.sign_in_button_fb)
    void loginWithFacebook(){
        signInFacebook();
    }

    @OnClick(R.id.sign_in_button)
    void setSignInGoogle() {
        mProgressDialog.show();
        signInGoogle();
    }

    private void signInFacebook() {
        LoginManager
                .getInstance()
                .logInWithReadPermissions(
                        this,
                        Arrays.asList("public_profile", "user_friends", "email")
                );
    }


    @OnClick(R.id.sign_in_anon)
    void setSignInAnonym() {
        mProgressDialog.show();
        mFAuth.signInAnonymously()
                .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if (!task.isSuccessful()) {
                            Log.w(Constants.TAG_PARENT, TAG + "signInAnonymously", task.getException());
                            alertLoginFailed("anon");
                        }
                        mProgressDialog.dismiss();
                    }
                });
    }

    @Override
    public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
        Log.e(Constants.TAG_PARENT, TAG + "onConnectionFailed:" + connectionResult);
        showToast(getString(R.string.play_error));
    }

    private void signInGoogle() {
        Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
        startActivityForResult(signInIntent, RC_SIGN_IN);
    }

    @Override
    public void onStart() {
        super.onStart();
        mFAuth.addAuthStateListener(mAuthStateListener);
    }

    String prov;
    public void alertLoginFailed(final String cred) {
        AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
        alertDialog.setMessage(R.string.login_failed);
        alertDialog.setPositiveButton(R.string.try_again, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                if(cred.equals("google")){
                    signInGoogle();
                }else if(cred.equals("facebook")){
                    signInFacebook();
                }

                dialog.dismiss();
            }
        });
        alertDialog.setNegativeButton(R.string.quit_app, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
                finish();
            }
        });
        alertDialog.setCancelable(false);
        alertDialog.show();
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == RC_SIGN_IN) {
            GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
            if (result.isSuccess()) {
                GoogleSignInAccount account = result.getSignInAccount();
                firebaseAuthWithGoogle(account);
                prov = "Google";
            } else {
                alertLoginFailed("google");
            }
        }else{
            callbackManager.onActivityResult(requestCode, resultCode, data);
        }
    }

    private void firebaseAuthWithGoogle(GoogleSignInAccount acct) {

        mProgressDialog.show();

        credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
        mFAuth.signInWithCredential(credential)
                .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {

                        if (!task.isSuccessful()) {
                            Log.w(Constants.TAG_PARENT, TAG + "signInWithCredential", task.getException());
                            showToast(getString(R.string.auth_failed));
                        }

                        mProgressDialog.dismiss();
                    }
                });
    }

    protected void showToast(String text) {
        Snackbar snackbar = Snackbar
                .make(vCoordinatorLayout, text, Snackbar.LENGTH_LONG);
        snackbar.show();
    }
}
public class SignInActivity扩展AppCompativity实现GoogleAppClient.OnConnectionFailedListener{
专用静态最终输入RC\U符号\U IN=9001;
私有静态字符串TAG=“SignInActivity:”;
@绑定(R.id.登录按钮)
按钮登录日志;
@绑定(R.id.sign\u in\u anon)
按钮符号;
@绑定(R.id.coordinator)
相对坐标布局;
@绑定(R.id.登录按钮)
按钮标志Facebook;
进程对话框;
私有FirebaseAuth mFAuth;
私人GoogleapClient MGoogleapClient;
私有FirebaseAuth.AuthStateListener mAuthStateListener;
私有FirebaseUser-mFUser;
私人CallbackManager CallbackManager;
认证证书;
@凌驾
受保护的void attachBaseContext(Context newBase){
super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase));
}
私有void setupWindowAnimations(){
爆破滑梯;
if(android.os.Build.VERSION.SDK\u INT>=android.os.Build.VERSION\u code.LOLLIPOP){
幻灯片=新的分解();
幻灯片。设置持续时间(1000);
getWindow().setExitTransition(幻灯片);
}
}
@凌驾
创建时受保护的void(@Nullable Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main\u activity\u sign\u in);
SharedReferences设置=获取SharedReferences(“第一次”,模式\私有);
boolean firstTime=settings.getBoolean(“first_launch”,true);//0是默认值
如果(第一次){
SharedReferences.Editor=settings.edit();
编辑器.putBoolean(“首次发布”,错误);
editor.apply();
}
把(这个)绑起来;
设置窗口动画();
mFAuth=FirebaseAuth.getInstance();
mProgressDialog=新建进度对话框(此);
设置消息(getString(R.string.signing_in));
mProgressDialog.setProgressStyle(ProgressDialog.STYLE\u微调器);
sdkinInitialize(this.getApplicationContext());
callbackManager=callbackManager.Factory.create();
LoginManager.getInstance().registerCallback(callbackManager,new FacebookCallback()){
@凌驾
成功时公共无效(LoginResult LoginResult){
handleFacebookAccessToken(loginResult.getAccessToken());
}
@凌驾
公开作废{
}
@凌驾
public void onError(facebook异常错误){
Toast.makeText(getApplicationContext(),“”+error.getMessage(),Toast.LENGTH\u LONG.show();
alertLoginFailed(“facebook”);
}
});
//配置谷歌登录
GoogleSignenOptions gso=新建GoogleSignenOptions.Builder(GoogleSignenOptions.DEFAULT\u登录)
.requestIdToken(getString(R.string.default\u web\u client\u id))
.requestEmail()
.build();
mgoogleapclient=新的Googleapclient.Builder(此)
.enableAutoManage(这个,这个)
.addApi(Auth.GOOGLE\u SIGN\u IN\u API,gso)
.build();
mAuthStateListener=new FirebaseAuth.AuthStateListener(){
@凌驾
AuthStateChanged上的公共void(@NonNull FirebaseAuth FirebaseAuth){
mFUser=firebaseAuth.getCurrentUser();
if(mFUser!=null){
意向意向=新意向(SignInActivity.this,MainActivity.class);
意向。额外(“prov”,prov);
星触觉(意向);
signalivity.this.finish();
}否则{
Log.d(Constants.TAG_PARENT,TAG+“onAuthStateChanged:userLogout”);
}
}
};
}
私有无效handleFacebookAccessToken(AccessToken令牌){
Log.d(标记“handleFacebookAccessToken:”+token);
mProgressDialog.show();
credential=FacebookAuthProvider.getCredential(token.getToken());
mFAuth.signInWithCredential(凭证)
.addOnCompleteListener(这是新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
如果(!task.issusccessful()){
Log.w(Constants.TAG_PARENT,TAG+“signInWithCredential”,task.getException());
showtoos(getString(R.string.auth_失败));
}
prov=“Facebook”;
mProgressDialog.disclose();
}
});
}
@OnClick(R.id.登录按钮)
void loginWithFacebook(){
signInFacebook();
}
@OnClick(R.id.sign\u in\u按钮)
void setSigningLogle(){
mProgressDialog.show();
签名日志();
}
私人无效登录Facebook(){
登录管理员
.getInstance()
.logInWithReadPermissions(
这
Arrays.asList(“公共配置文件”、“用户朋友”、“电子邮件”)
);
}
@OnClick(R.id.sign\u in\n)
void setsigninanoym(){
mProgressDialog.show();
mFAuth.signinanoymously()
.addOnCompleteListener(这是新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
如果(!task.issusccessful()){
Log.w(Constants.TAG_PARENT,TAG+“signinanoymously”,task.getException());
警报登录失败(“anon”);
public class SignInActivity extends AppCompatActivity implements GoogleApiClient.OnConnectionFailedListener {

    private static final int RC_SIGN_IN = 9001;
    private static String TAG = "SignInActivity:";
    @Bind(R.id.sign_in_button)
    Button signInGoogle;
    @Bind(R.id.sign_in_anon)
    Button signInAnonym;
    @Bind(R.id.coordinator)
    RelativeLayout vCoordinatorLayout;

    @Bind(R.id.sign_in_button_fb)
    Button signInFacebook;

    ProgressDialog mProgressDialog;

    private FirebaseAuth mFAuth;
    private GoogleApiClient mGoogleApiClient;
    private FirebaseAuth.AuthStateListener mAuthStateListener;
    private FirebaseUser mFUser;
    private CallbackManager callbackManager;
    AuthCredential credential;
    @Override
    protected void attachBaseContext(Context newBase) {
        super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase));
    }

    private void setupWindowAnimations() {
        Explode slide;
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
            slide = new Explode();
            slide.setDuration(1000);
            getWindow().setExitTransition(slide);
        }
    }

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_activity_sign_in);

        SharedPreferences settings = getSharedPreferences("firstTime", MODE_PRIVATE);
        boolean firstTime = settings.getBoolean("first_launch", true); //0 is the default valu

        if(firstTime){
            SharedPreferences.Editor editor = settings.edit();
            editor.putBoolean("first_launch", false);
            editor.apply();
        }

        ButterKnife.bind(this);
        setupWindowAnimations();

        mFAuth = FirebaseAuth.getInstance();

        mProgressDialog = new ProgressDialog(this);
        mProgressDialog.setMessage(getString(R.string.signing_in));
        mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);

        FacebookSdk.sdkInitialize(this.getApplicationContext());
        callbackManager = CallbackManager.Factory.create();
        LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                handleFacebookAccessToken(loginResult.getAccessToken());
            }

            @Override
            public void onCancel() {
            }

            @Override
            public void onError(FacebookException error) {
                Toast.makeText(getApplicationContext(), "" + error.getMessage(), Toast.LENGTH_LONG).show();
                alertLoginFailed("facebook");
            }
        });

        // Configure Google Sign In
        GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestIdToken(getString(R.string.default_web_client_id))
                .requestEmail()
                .build();

        mGoogleApiClient = new GoogleApiClient.Builder(this)
                .enableAutoManage(this, this)
                .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
                .build();

        mAuthStateListener = new FirebaseAuth.AuthStateListener() {
            @Override
            public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
                mFUser = firebaseAuth.getCurrentUser();
                if (mFUser != null) {
                    Intent intent = new Intent(SignInActivity.this, MainActivity.class);
                    intent.putExtra("prov", prov);
                    startActivity(intent);
                    SignInActivity.this.finish();
                } else {
                    Log.d(Constants.TAG_PARENT, TAG + "onAuthStateChanged:userLogout");
                }
            }
        };
    }

    private void handleFacebookAccessToken(AccessToken token) {
        Log.d(TAG, "handleFacebookAccessToken:" + token);
        mProgressDialog.show();
        credential = FacebookAuthProvider.getCredential(token.getToken());
        mFAuth.signInWithCredential(credential)
                .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if (!task.isSuccessful()) {
                            Log.w(Constants.TAG_PARENT, TAG + "signInWithCredential", task.getException());
                            showToast(getString(R.string.auth_failed));
                        }
                        prov = "Facebook";
                        mProgressDialog.dismiss();

                    }
                });
    }

    @OnClick(R.id.sign_in_button_fb)
    void loginWithFacebook(){
        signInFacebook();
    }

    @OnClick(R.id.sign_in_button)
    void setSignInGoogle() {
        mProgressDialog.show();
        signInGoogle();
    }

    private void signInFacebook() {
        LoginManager
                .getInstance()
                .logInWithReadPermissions(
                        this,
                        Arrays.asList("public_profile", "user_friends", "email")
                );
    }


    @OnClick(R.id.sign_in_anon)
    void setSignInAnonym() {
        mProgressDialog.show();
        mFAuth.signInAnonymously()
                .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if (!task.isSuccessful()) {
                            Log.w(Constants.TAG_PARENT, TAG + "signInAnonymously", task.getException());
                            alertLoginFailed("anon");
                        }
                        mProgressDialog.dismiss();
                    }
                });
    }

    @Override
    public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
        Log.e(Constants.TAG_PARENT, TAG + "onConnectionFailed:" + connectionResult);
        showToast(getString(R.string.play_error));
    }

    private void signInGoogle() {
        Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
        startActivityForResult(signInIntent, RC_SIGN_IN);
    }

    @Override
    public void onStart() {
        super.onStart();
        mFAuth.addAuthStateListener(mAuthStateListener);
    }

    String prov;
    public void alertLoginFailed(final String cred) {
        AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
        alertDialog.setMessage(R.string.login_failed);
        alertDialog.setPositiveButton(R.string.try_again, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                if(cred.equals("google")){
                    signInGoogle();
                }else if(cred.equals("facebook")){
                    signInFacebook();
                }

                dialog.dismiss();
            }
        });
        alertDialog.setNegativeButton(R.string.quit_app, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
                finish();
            }
        });
        alertDialog.setCancelable(false);
        alertDialog.show();
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == RC_SIGN_IN) {
            GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
            if (result.isSuccess()) {
                GoogleSignInAccount account = result.getSignInAccount();
                firebaseAuthWithGoogle(account);
                prov = "Google";
            } else {
                alertLoginFailed("google");
            }
        }else{
            callbackManager.onActivityResult(requestCode, resultCode, data);
        }
    }

    private void firebaseAuthWithGoogle(GoogleSignInAccount acct) {

        mProgressDialog.show();

        credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
        mFAuth.signInWithCredential(credential)
                .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {

                        if (!task.isSuccessful()) {
                            Log.w(Constants.TAG_PARENT, TAG + "signInWithCredential", task.getException());
                            showToast(getString(R.string.auth_failed));
                        }

                        mProgressDialog.dismiss();
                    }
                });
    }

    protected void showToast(String text) {
        Snackbar snackbar = Snackbar
                .make(vCoordinatorLayout, text, Snackbar.LENGTH_LONG);
        snackbar.show();
    }
}