- 确保您已经设置了Firebase和Google登录。
- 确保您的API密钥和OAuth 2.0客户端ID在Firebase控制台上正确设置。
- 确保您的AndroidManifest.xml文件包含以下权限:
<uses-permission android:name="android.permission.INTERNET" />
- 如果出现以下错误,表示您的包名不匹配或SHA-1散列值未正确设置:
E/FirebaseAuth: [GetAuthDomainTask] Error getting project Config. Failed with {0}
E/FirebaseAuth: [SmsRetrieverHelper] SMS verification code request failed: unknown status code: 17093 null
- 如果Android SDK未正确安装,您可能会看到以下错误消息:
Error building Player: CommandInvokationFailure: Failed to update Android SDK package list.
- 如果您的Unity版本低于2018.4,您可能需要使用Firebase SDK 4.x版本。
- 确保使用的Android支持库版本与Firebase SDK版本兼容。
以下是示例代码:
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
GoogleSignInConfiguration config = new GoogleSignInConfiguration
{
WebClientId = "YOUR_WEB_CLIENT_ID_HERE",
RequestIdToken = true,
RequestEmail = true,
};
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DefaultSignIn)
.RequestIdToken("YOUR_WEB_CLIENT_ID_HERE")
.RequestEmail()
.Build();
GoogleSignInClient client = GoogleSignIn.GetClient(this, gso);
TaskCompletionSource<FirebaseUser> signInCompleted = new TaskCompletionSource<FirebaseUser>();
GoogleSignInResult result = await Auth.GoogleSignInApi.SilentSignInAsync(googleApiClient);
if (result.IsSucceeded)
{
string idToken = result.SignInAccount.IdToken;
AuthCredential credential = Firebase.Auth.GoogleAuthProvider.GetCredential(idToken, null);
auth.SignInWithCredentialAsync(credential).ContinueWith(task =>
{
if (task.IsCanceled)
{
signInCompleted.SetCanceled();
}
else if (task.IsFaulted)
{
signInCompleted.SetException(task.Exception);
}
else
{
FirebaseUser firebaseUser = task.Result;
signInCompleted.SetResult(firebaseUser);
}
});
}
else
{
result.StartResolutionForResult(this, GOOGLE_SIGN_IN_REQUEST_CODE);
}