Android Firebase Google认证仅在从单台计算机运行时有效

chhqkbe1  于 2022-12-02  发布在  Android
关注(0)|答案(1)|浏览(161)

我会试着把标题说得更清楚一点。我已经为我的Android应用程序实现了使用firebase的谷歌登录。当我在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文件在两台计算机上是相同的。
任何帮助都将不胜感激。

ia2d9nvy

ia2d9nvy1#

这是发生只是因为你的调试SHA密钥是相关的PC在您的firebase控制台,如果你想访问或从另一个构建,那么你也需要添加SHA密钥为您的新PC在firebase控制台,否则你可以添加释放SHA密钥直接和构建apk作为释放,你可以访问它的任何地方,
在Firebase控制台中添加多个SHA密钥的步骤:
1.登录Firebase console
1.选择项目
1.选择项目后,您将找到应用程序列表,然后从该应用程序中选择要为其添加SHA的应用程序,
1.最后,在此之后,您将能够看到添加“添加指纹“按钮下面的“SHA证书指纹“部分,在那里您可以添加多个SHA密钥

相关问题