我会试着把标题说得更清楚一点。我已经为我的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文件在两台计算机上是相同的。
任何帮助都将不胜感激。
1条答案
按热度按时间ia2d9nvy1#
这是发生只是因为你的调试SHA密钥是相关的PC在您的firebase控制台,如果你想访问或从另一个构建,那么你也需要添加SHA密钥为您的新PC在firebase控制台,否则你可以添加释放SHA密钥直接和构建apk作为释放,你可以访问它的任何地方,
在Firebase控制台中添加多个SHA密钥的步骤:
1.登录Firebase console、
1.选择项目
1.选择项目后,您将找到应用程序列表,然后从该应用程序中选择要为其添加SHA的应用程序,
1.最后,在此之后,您将能够看到添加“添加指纹“按钮下面的“SHA证书指纹“部分,在那里您可以添加多个SHA密钥