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