我有一个登录屏幕,您可以通过Google登录,但当我点击登录然后选择该帐户时,它会保持相同的活动 . 日志中的错误如下:
W/InputMethodManager: startInputReason = 1
E/GoogleProvider: Error logging in with Google. 16 null
EGLNativeWindowType 0x704a430010 disconnect failed
Activity resumed, time: 182884358
活动的代码如下:
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import com.firebase.ui.auth.AuthUI;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import java.util.Arrays;
public class LoginActivity extends AppCompatActivity {
private static final int RC_SIGN_IN = 123;
private FirebaseAuth mAuth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
startActivityForResult(AuthUI.getInstance().createSignInIntentBuilder()
.setAvailableProviders(
Arrays.asList( new AuthUI.IdpConfig.GoogleBuilder().build(),
new AuthUI.IdpConfig.FacebookBuilder().build()))
.setIsSmartLockEnabled(false)
.setTheme(R.style.AppTheme)
.build(),
RC_SIGN_IN);
mAuth = FirebaseAuth.getInstance();
mAuth.addAuthStateListener(firebaseAuth -> {
if(firebaseAuth.getCurrentUser()!= null) {
startHomeActivity();
}
});
}
@Override
public void onStart() {
super.onStart();
FirebaseUser currentUser = mAuth.getCurrentUser();
if(currentUser != null) {
startHomeActivity();
}
}
private void startHomeActivity() {
Intent intent = new Intent(getApplicationContext(), Home.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
}
}
我已经使用SHA1签署了Firebase并激活了服务中的登录选项 .
2 回答
尝试在Firebase Console的项目设置中为您的包名添加SHA1 .
要解决的步骤是:
1 - keytool -list -v -keystore~ / .android / debug.keystore
2 - 复制SHA1(它必须是SHA1,因为这是他们用于Oauth的东西)
3 - 登录firebase控制台 - >项目设置 - >常规 - > android app
4 - 向下滚动并将SHA1指纹添加到指纹列表中
5 - 下载新的google-services.json并替换你的android studio项目 .
6 - 从手机中删除应用并重新部署