You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase Google登录功能异常求助:选账号后弹出错误提示

Firebase Google登录失败问题排查

我正在尝试用Firebase实现Google登录功能,但一直无法正常运行,已经花了好几个小时排查。现在的问题是:点击“Sign in with Google”按钮并选择账号后,会弹出错误提示Toast。以下是我的实现代码:

public class LoginActivity extends AppCompatActivity {

    private RelativeLayout signInWithGoogleBtn;
    private FirebaseAuth mAuth;
    private GoogleSignInOptions gso;
    private GoogleSignInClient mGoogleSignInClient;
    private static final int RC_SIGN_IN = 123;

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

        signInWithGoogleBtn = findViewById(R.id.signInWithGoogleBtn);
        mAuth = FirebaseAuth.getInstance();

        GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestIdToken(getString(R.string.default_web_client_id))
                .requestEmail()
                .build();

        mGoogleSignInClient = GoogleSignIn.getClient(this, gso);

        signInWithGoogleBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                googleSignIn();
            }
        });
    }

    private void googleSignIn() {
        Intent intent = mGoogleSignInClient.getSignInIntent();
        startActivityForResult(intent, RC_SIGN_IN);
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == RC_SIGN_IN) {
            Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
            try {
                GoogleSignInAccount account = task.getResult(ApiException.class);
                firebaseAuthWithGoogle(account.getIdToken());
            } catch (ApiException e) {
                Toast.makeText(LoginActivity.this, "Error", Toast.LENGTH_SHORT).show();
            }
        }
    }

    private void firebaseAuthWithGoogle(String idToken) {
        AuthCredential credential = GoogleAuthProvider.getCredential(idToken, null);
        mAuth.signInWithCredential(credential)
                .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if (task.isSuccessful()) {
                            Toast.makeText(LoginActivity.this, "Google Sign In Success", Toast.LENGTH_SHORT).show();
                            FirebaseUser user = mAuth.getCurrentUser();
                            startActivity(new Intent(LoginActivity.this, MainActivity.class));
                            LoginActivity.this.finish();
                        } else {
                            Toast.makeText(LoginActivity.this, "Failed to Sign In with Google! Please check your credentials.", Toast.LENGTH_LONG).show();
                        }
                    }
                });
    }
}

排查步骤

  • 先获取具体错误信息:修改ApiException的catch块,打印错误码和日志,不要只显示模糊的"Error":

    catch (ApiException e) {
        Log.e("GoogleSignInError", "登录失败", e);
        Toast.makeText(LoginActivity.this, "错误码: " + e.getStatusCode(), Toast.LENGTH_SHORT).show();
    }
    常见错误码对应问题:
    - 10:客户端ID配置错误
    - 7:签名证书SHA1未在Firebase控制台配置
    - 12500:网络无法访问Google服务
    - 16:用户取消登录
    
    
  • 核对default_web_client_id有效性:

    • 确保google-services.json已正确放置在app模块根目录
    • 打开google-services.json,检查oauth_client节点下的web类型client_id,是否和代码中getString(R.string.default_web_client_id)的值一致
  • 检查SHA1指纹配置:

    • 运行./gradlew signingReport获取debug/release版本的SHA1值
    • 在Firebase控制台的「项目设置」中,添加对应版本的SHA1指纹
  • 确认依赖完整性:
    app/build.gradle中需包含:

    implementation 'com.google.firebase:firebase-auth:22.3.0'
    implementation 'com.google.android.gms:play-services-auth:20.7.0'
    

    根build.gradle中需添加Google服务插件:

    classpath 'com.google.gms:google-services:4.4.0'
    

    app模块末尾需添加:

    apply plugin: 'com.google.gms.google-services'
    
  • 启用Firebase Google登录方式:
    在Firebase控制台的「Authentication」→「登录方法」中,确保Google登录已启用,且配置了正确的支持邮箱域名(若有设置)

  • 检查网络环境:确保测试设备能正常访问Google服务,避免网络限制影响登录流程

内容的提问来源于stack exchange,提问作者Mohammad Abu Saada

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 22:03:23