【问题标题】:Android Firebase Google auth only working when run from single computerAndroid Firebase Google 身份验证仅在从单台计算机运行时工作
【发布时间】:2026-02-10 09:40:01
【问题描述】:

我会尽量澄清标题。我已经为我的 Android 应用程序使用 Firebase 实现了 Google 登录。当我在 iMac 上尝试时,一切正常。我可以选择帐户并使用该帐户登录。

当我尝试从另一台笔记本电脑构建/运行 Android 应用程序时,会出现此问题。当我尝试登录时,我仍然可以选择一个帐户,但是在选择一个帐户后它不会继续登录并且登录活动会重新出现。日志不显示任何内容。

这是我登录/注销的方式,但我认为这不是问题。

public class AuthController {
private AuthListener authListener;
static final int RC_SIGN_IN = 9001;
private FirebaseAuth mAuth;
private FirebaseAuth.AuthStateListener mAuthListener;

public AuthController(){
    mAuth = FirebaseAuth.getInstance();
    mAuthListener = new FirebaseAuth.AuthStateListener() {
        @Override
        public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
            FirebaseUser user = firebaseAuth.getCurrentUser();
            if (user != null) {
                // User is signed in
                Log.d(AUTHCONTROLLER_TAG, "onAuthStateChanged:signed_in:" + user.getUid());
            } else {
                // User is signed out
                Log.d(AUTHCONTROLLER_TAG, "onAuthStateChanged:signed_out");
            }
            authListener.onUserAuthenticated(user);
        }
    };
}

public void startAuthStateListener() {
    mAuth.addAuthStateListener(mAuthListener);
}

public void stopAuthStateListener() {
    if (mAuthListener != null) {
        mAuth.removeAuthStateListener(mAuthListener);
    }
}

public void firebaseAuthWithGoogle(GoogleSignInAccount acct, Activity activity) {
    Log.d(AUTHCONTROLLER_TAG, "firebaseAuthWithGoogle:" + acct.getId());
    AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
    mAuth.signInWithCredential(credential)
            .addOnCompleteListener(activity, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    Log.d(AUTHCONTROLLER_TAG, "signInWithCredential:onComplete:" + task.isSuccessful());
                    // If sign in fails, display a message to the user. If sign in succeeds
                    // the auth state authListener will be notified and logic to handle the
                    // signed in user can be handled in the authListener.
                    if (!task.isSuccessful()) {
                        Log.w(AUTHCONTROLLER_TAG, "signInWithCredential", task.getException());
                    }
                }
            });
}

public void signOut() {
    mAuth.signOut();
}

void setAuthListener(AuthListener authListener) {
    this.authListener = authListener;
}

interface AuthListener {
    void onUserAuthenticated(FirebaseUser user);
}

我猜这与键和/或 google-services.json 的配置有关。但我不确定如何进行。两台计算机上的 json 文件相同。

任何帮助将不胜感激。

【问题讨论】:

  • 你在同一台设备上运行?

标签: android json firebase firebase-authentication google-play-services


【解决方案1】:

发生这种情况只是因为您的调试 SHA 密钥与您的 Firebase 控制台中的 PC 相关,如果您想从另一个访问或构建,那么您还需要在 Firebase 控制台中为您的新 PC 添加 SHA 密钥,否则您可以添加直接发布 SHA 密钥并将 apk 构建为发布,您可以在任何地方访问它,

在 Firebase 控制台中添加多个 SHA 密钥的步骤:

  1. 登录Firebase console,
  2. 选择您的项目
  3. 选择项目后,您会找到应用列表,从该应用中,您需要选择要为其添加 SHA 的应用,
  4. 最后,在此之后,您将可以看到在“SHA 证书指纹”部分下方添加“添加指纹”按钮,您可以在其中添加多个 SHA 密钥

【讨论】:

  • 我们如何添加另一个 sha-1 密钥以及在哪里?我们是两个人的团队,我们在两台计算机上进行开发和测试。我们在哪里添加两台计算机的 sha-1 密钥?
最近更新 更多