问题描述: 在Android Studio上使用Firebase进行Google登录时,可能会遇到一些错误。
解决方法:
firebase-auth
和firebase-core
。以下是一个示例代码,用于在Android Studio上实现Firebase Google登录并处理可能的错误:
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.gms.auth.api.Auth;
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
import com.google.android.gms.auth.api.signin.GoogleSignInResult;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.firebase.auth.AuthCredential;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.auth.GoogleAuthProvider;
public class MainActivity extends AppCompatActivity implements GoogleApiClient.OnConnectionFailedListener {
private static final int RC_SIGN_IN = 9001;
private GoogleApiClient googleApiClient;
private FirebaseAuth firebaseAuth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 配置Google登录选项
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.default_web_client_id))
.requestEmail()
.build();
// 初始化GoogleApiClient
googleApiClient = new GoogleApiClient.Builder(this)
.enableAutoManage(this, this)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.build();
// 初始化FirebaseAuth
firebaseAuth = FirebaseAuth.getInstance();
// 启动Google登录
Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(googleApiClient);
startActivityForResult(signInIntent, RC_SIGN_IN);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// 处理Google登录结果
if (requestCode == RC_SIGN_IN) {
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
if (result.isSuccess()) {
// Google登录成功,开始Firebase身份验证
GoogleSignInAccount account = result.getSignInAccount();
firebaseAuthWithGoogle(account);
} else {
// Google登录失败
Toast.makeText(this, "Google登录失败", Toast.LENGTH_SHORT).show();
}
}
}
private void firebaseAuthWithGoogle(GoogleSignInAccount account) {
AuthCredential credential = GoogleAuthProvider.getCredential(account.getIdToken(), null);
firebaseAuth.signInWithCredential(credential)
.addOnCompleteListener(this, task -> {
if (task.isSuccessful()) {
// Firebase身份验证成功
FirebaseUser user = firebaseAuth.getCurrentUser();
Toast.makeText(this, "Firebase登录成功:" + user.getEmail(), Toast.LENGTH_SHORT).show();
} else {
// Firebase身份验证失败
Toast.makeText(this, "Firebase登录失败", Toast.LENGTH_SHORT).show();
}
});
}
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
Log.d("GoogleLogin", "连接失败:" + connectionResult);
}
}
这段代码会在应用启动时启动Google登录流程,并将结果传递给Firebase进行身份验证。如果Google登录成功并且Firebase身份验证也成功,将显示一个Toast消息以显示登录成功。如果遇到任何错误,将显示一个Toast消息以显示登录失败。
希望这可以帮助你解决Android Studio上Firebase Google登录错误。