Android Facebook登录按钮在包含firebase身份验证后冻结

Android Facebook登录按钮在包含firebase身份验证后冻结,android,facebook,android-studio,firebase,firebase-authentication,Android,Facebook,Android Studio,Firebase,Firebase Authentication,我有一个通过Facebook登录按钮登录Facebook的活动 它工作得很好,但由于我在上面添加了firebase,当我按下Facebook登录按钮时,系统冻结 我添加了Firebase身份验证方法,并根据Firebase网站遵循了所需的步骤,但仍然存在此问题 Logcat没有指出任何错误,但由于超时异常,系统冻结并崩溃 有些代码使用类实现。然而,它似乎被弃用了,因为它不再是firebase包的一部分 我实现的活动类如下所示 public class ConfigurationActivity

我有一个通过Facebook登录按钮登录Facebook的活动

它工作得很好,但由于我在上面添加了firebase,当我按下Facebook登录按钮时,系统冻结

我添加了Firebase身份验证方法,并根据Firebase网站遵循了所需的步骤,但仍然存在此问题

Logcat没有指出任何错误,但由于超时异常,系统冻结并崩溃

有些代码使用类实现。然而,它似乎被弃用了,因为它不再是firebase包的一部分

我实现的活动类如下所示

public class ConfigurationActivity extends Activity {

    Button b_v_mm,b_som;
    LoginButton loginButton;
    CallbackManager callbackManager;

    // [START declare_auth]
    private FirebaseAuth mAuth;
    // [END declare_auth]


    private void handleFacebookAccessToken(AccessToken token) {
        Log.d("FireBase", "handleFacebookAccessToken:" + token);

        AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
        mAuth.signInWithCredential(credential)
                .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if (task.isSuccessful()) {
                            // Sign in success, update UI with the signed-in user's information
                            Log.d("FireBase", "signInWithCredential:success");
                            FirebaseUser user = mAuth.getCurrentUser();
                            //updateUI(user);
                        } else {
                            // If sign in fails, display a message to the user.
                            Log.w("FireBase", "signInWithCredential:failure", task.getException());
                            //Toast.makeText(FacebookLoginActivity.this, "Authentication failed.",
                             //       Toast.LENGTH_SHORT).show();
                            //updateUI(null);
                        }

                        // ...
                    }
                });
    }

    // [START on_start_check_user]
    @Override
    public void onStart() {
        super.onStart();
        Log.d("FireBase", "onStart");
        // Check if user is signed in (non-null) and update UI accordingly.
        FirebaseUser currentUser = mAuth.getCurrentUser();
        //updateUI(currentUser);
    }
    // [END on_start_check_user]

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        Log.d("LoginFace", "LoginFace - onActivityResult");
        super.onActivityResult(requestCode, resultCode, data);
        Log.d("LoginFace", "LoginFace - onActivityResult");
        callbackManager.onActivityResult(requestCode, resultCode, data);
        Log.d("LoginFace", "LoginFace - After callbackManager");
/*
        if (AccessToken.getCurrentAccessToken() != null) {
            Log.d("AjudaFace", "AjudaFace - logout");
            LoginManager.getInstance().logOut();
        }*/
    }

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_configuration);

        //Botãp da barra de ferramentas que faz retornar para o Menu principal.
        b_v_mm = (Button) findViewById(com.cerveja.qof.pedro.qof_cerveja.R.id.b_v_mm);
        b_v_mm.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(ConfigurationActivity.this, MainMenu.class);
                startActivity(intent);
                finish();
            }
        });

        b_som = (Button) findViewById(com.cerveja.qof.pedro.qof_cerveja.R.id.b_som);
        //Altera opções de som.
        b_som.setOnClickListener(new View.OnClickListener() {
                                      @Override
                                      public void onClick(View v) {

                                          //Carrega opções de texto do botão, armazenadas no repositório de strings
                                          String s_som_on = getString(R.string.b_som_on);
                                          String s_som_off = getString(R.string.b_som_off);

                                          //Caso o som esteja desligado, o desliga.
                                          if(b_som.getText().equals(s_som_on)) {
                                              b_som.setText(s_som_off);
                                          }
                                          else //Caso o som esteja desligado, o liga.
                                              if (b_som.getText().equals(s_som_off)){
                                                  b_som.setText(s_som_on);
                                              }
                                      }
                                  }
        );

        callbackManager = CallbackManager.Factory.create();


// ...
// Initialize Firebase Auth
        mAuth = FirebaseAuth.getInstance();

        loginButton = (LoginButton) findViewById(R.id.login_button);
        loginButton.setReadPermissions("email","public_profile");
        Log.d("LoginFace", "LoginFace - Button Created");

        // Initialize Firebase Auth
        mAuth = FirebaseAuth.getInstance();

        // Callback registration
        loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                handleFacebookAccessToken(loginResult.getAccessToken());
                Log.d("LoginFace", "LoginFace - Sucesso");
                Toast.makeText(getApplicationContext(),
                        "LOGIN REALIZADO", Toast.LENGTH_LONG).show();
            }

            @Override
            public void onCancel() {
                Log.d("LoginFace", "LoginFace - Cancelado");
                Toast.makeText(getApplicationContext(),
                        "LOGIN CANCELADO", Toast.LENGTH_LONG).show();
            }


            @Override
            public void onError(FacebookException exception) {
                Log.d("LoginFace", "LoginFace - Erro");
                Toast.makeText(getApplicationContext(),
                        "LOGIN Erro", Toast.LENGTH_LONG).show();
                Log.d("LoginFace", exception.toString());
            }
        });


    }
}
公共类配置活动扩展活动{
按钮b_v_mm,b_som;
登录按钮登录按钮;
CallbackManager CallbackManager;
//[开始声明\u验证]
私人消防队;
//[结束声明授权]
私有无效handleFacebookAccessToken(AccessToken令牌){
Log.d(“FireBase”、“handleFacebookAccessToken:+token”);
AuthCredential credential=FacebookAuthProvider.getCredential(token.getToken());
mAuth.SIGNWITH凭证(凭证)
.addOnCompleteListener(这是新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
//登录成功,使用登录用户的信息更新UI
Log.d(“FireBase”,“使用凭据登录:成功”);
FirebaseUser=mAuth.getCurrentUser();
//updateUI(用户);
}否则{
//如果登录失败,则向用户显示消息。
Log.w(“FireBase”,“signInWithCredential:failure”,task.getException());
//Toast.makeText(FacebookLoginActivity.this,“身份验证失败”,
//吐司。长度(短)。show();
//updateUI(null);
}
// ...
}
});
}
//[启动开始检查用户]
@凌驾
public void onStart(){
super.onStart();
日志d(“FireBase”、“onStart”);
//检查用户是否已登录(非空),并相应地更新用户界面。
FirebaseUser currentUser=mAuth.getCurrentUser();
//updateUI(当前用户);
}
//[结束于\u开始\u检查\u用户]
@凌驾
ActivityResult上的公共void(int请求代码、int结果代码、意图数据){
Log.d(“LoginFace”、“LoginFace-onActivityResult”);
super.onActivityResult(请求代码、结果代码、数据);
Log.d(“LoginFace”、“LoginFace-onActivityResult”);
callbackManager.onActivityResult(请求代码、结果代码、数据);
Log.d(“LoginFace”、“LoginFace-在callbackManager之后”);
/*
if(AccessToken.getCurrentAccessToken()!=null){
Log.d(“AjudaFace”、“AjudaFace-注销”);
LoginManager.getInstance().logOut();
}*/
}
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u配置);
//费拉门塔斯·法兹·雷托纳尔先生是菜单的负责人。
b_v_mm=(按钮)findViewById(com.cerveja.qof.pedro.qof_cerveja.R.id.b_v_mm);
b_v_mm.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
意向意向=新意向(ConfigurationActivity.this,MainMenu.class);
星触觉(意向);
完成();
}
});
b_-som=(按钮)findViewById(com.cerveja.qof.pedro.qof_-cerveja.R.id.bsom);
//另一种选择。
b_som.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//Carrega opões de texto do botão,armazenadas no repositório de strings
String s_som_on=getString(R.String.b_som_on);
String s_som_off=getString(R.String.b_som_off);
//卡索·索姆·埃斯特亚·德西加多,德西加。
if(b_som.getText().equals(s_som_on)){
b_som.setText(s_som_off);
}
否则//Caso o som esteja desligado,o liga。
if(b_som.getText().equals(s_som_off)){
b_som.setText(s_som_on);
}
}
}
);
callbackManager=callbackManager.Factory.create();
// ...
//初始化Firebase身份验证
mAuth=FirebaseAuth.getInstance();
loginButton=(loginButton)findviewbyd(R.id.login_按钮);
setReadPermissions(“电子邮件”、“公共档案”);
Log.d(“LoginFace”、“LoginFace-创建的按钮”);
//初始化Firebase身份验证
mAuth=FirebaseAuth.getInstance();
//回调注册
registerCallback(callbackManager,newfacebookcallback()){
@凌驾
成功时公共无效(LoginResult LoginResult){
handleFacebookAccessToken(loginResult.getAccessToken());
Log.d(“登录界面”、“登录界面-成功”);
Toast.makeText(getApplicationContext(),
“登录”,Toast.LENGTH_LONG.show();
}