Я хочу, чтобы пользователь вошел через 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
Нет исключения для учетных данных - Google Signin ⇐ Android
Форум для тех, кто программирует под Android
-
Anonymous
1753115186
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. Это не работает ни в одном устройстве. Я попробовал убирать кеш, и все еще идет такая же проблема.
Подробнее здесь: [url]https://stackoverflow.com/questions/79709364/no-credential-exception-google-signin[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия