Нет исключения для учетных данных - Google SigninAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Нет исключения для учетных данных - Google Signin

Сообщение Anonymous »

Я хочу, чтобы пользователь вошел через Google. Этот код работал за день назад, но сейчас он не работает. Я не внес никаких изменений в код. < /P>
Button(
onClick = {
coroutineScope.launch {
try {
val accounts = AccountManager.get(context).accounts
Log.d("Accounts", accounts.joinToString { it.name })
val interactiveRequest = GetCredentialRequest.Builder()
.addCredentialOption(
GetGoogleIdOption.Builder()
.setServerClientId(context.getString(R.string.default_web_client_id))
.setFilterByAuthorizedAccounts(false)
.setAutoSelectEnabled(false)
.build()
)
.build()

val response = credentialManager.getCredential(context, interactiveRequest)
if (response.credential is CustomCredential && response.credential.type == GoogleIdTokenCredential.TYPE_GOOGLE_ID_TOKEN_CREDENTIAL) {
val googleIdTokenCredential = GoogleIdTokenCredential.createFrom(response.credential.data)
val idToken = googleIdTokenCredential.idToken

val authCredential = GoogleAuthProvider.getCredential(idToken, null)
FirebaseAuth.getInstance().signInWithCredential(authCredential)
.addOnCompleteListener { task ->
if (task.isSuccessful) {
val uid = FirebaseAuth.getInstance().currentUser?.uid ?: return@addOnCompleteListener

Firebase.firestore.collection("users").document(uid).get()
.addOnSuccessListener { document ->
if (document.exists()) {
if(document.get("role") == "Manager"){
val intent = Intent(context, ManagerMainActivity::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
context.startActivity(intent)
} else {
val intent = Intent(context, ClientMainActivity::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
context.startActivity(intent)
}
} else {
showToast = true
createUser(context)
}
}
.addOnFailureListener {
Log.e("Firestore", "Failed to check user registration", it)
showFailureToast = true
}
} else {
Log.e("SignIn", "Sign-in failed", task.exception)
}
}
}
} catch (ex: Exception) {
Log.e("SignIn", "Interactive sign-in failed", ex)
showFailureToast = true
}
}
},
modifier = Modifier
.fillMaxWidth()
.height(50.dp),
colors = ButtonDefaults.buttonColors(containerColor = Color.White)
) {
Icon(
painter = painterResource(id = R.drawable.google_search_logo),
contentDescription = "Google Icon",
modifier = Modifier.size(50.dp),
tint = Color.Unspecified
)
Spacer(modifier = Modifier.width(8.dp))
Text("Sign in with Google", color = Color.Black)
}
< /code>
Я не могу понять, что произошло. Я попытался заменить Google-services.json. но все еще не повезло. < /p>
Interactive sign-in failed
androidx.credentials.exceptions.NoCredentialException: No credentials available
at androidx.credentials.internal.ConversionUtilsKt.toJetpackGetException(ConversionUtils.kt:82)
at androidx.credentials.CredentialProviderFrameworkImpl.convertToJetpackGetException$credentials_release(CredentialProviderFrameworkImpl.kt:295)
at androidx.credentials.CredentialProviderFrameworkImpl$onGetCredential$outcome$2.onError(CredentialProviderFrameworkImpl.kt:162)
at androidx.credentials.CredentialProviderFrameworkImpl$onGetCredential$outcome$2.onError(CredentialProviderFrameworkImpl.kt:150)
at android.credentials.CredentialManager$GetCredentialTransport.lambda$onError$2(CredentialManager.java:694)
at android.credentials.CredentialManager$GetCredentialTransport.$r8$lambda$nlbYav9mLBoE6Yh1vFKCvITF3ks(Unknown Source:0)
at android.credentials.CredentialManager$GetCredentialTransport$$ExternalSyntheticLambda2.run(Unknown Source:6)
at androidx.credentials.CredentialManager$$ExternalSyntheticLambda0.execute(D8$$SyntheticClass:0)
at android.credentials.CredentialManager$GetCredentialTransport.onError(CredentialManager.java:693)
at android.credentials.IGetCredentialCallback$Stub.onTransact(IGetCredentialCallback.java:123)
at android.os.Binder.execTransactInternal(Binder.java:1351)
at android.os.Binder.execTransact(Binder.java:1282)
< /code>
Я проверил, что у моего устройства все еще есть много учетных записей Google. Это не работает ни в одном устройстве. Я попробовал убирать кеш, и все еще идет такая же проблема.

Подробнее здесь: https://stackoverflow.com/questions/797 ... gle-signin
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»