Когда я выхожу из учетной записи и вхожу в другую учетную запись, я вхожу в предыдущую учетную запись. Когда я выхожу из системы, закрываю и открываю приложение, я могу правильно войти в другую учетную запись. В приложении есть автоматический вход. Интересно то, что когда я открываю и закрываю приложение, когда оно входит в неправильную учетную запись, оно входит в правильную учетную запись.
Приведем пример: когда вы входите в систему под пользователем 1 и выйдите из системы, а затем войдите под пользователем 2, появится пользователь 1. но когда я открываю и закрываю приложение, появляется пользователь 2.
Обновление: я выхожу не только из Firebase, но и из Google. Однако проблема продолжается. Проблема в том, что после выхода из системы вошедшая в систему учетная запись становится предыдущей учетной записью, но она фиксируется при открытии и закрытии приложения. Поэтому я думаю, что аутентификация Firebase не обновляется правильно.
Код выхода
suspend fun signOut() {
try {
auth.signOut()
//
val googleSignInOptions = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(context.getString(R.string.web_client_id))
.requestEmail()
.build()
val googleSignInClient = GoogleSignIn.getClient(context, googleSignInOptions)
googleSignInClient.signOut().addOnCompleteListener { task ->
if (task.isSuccessful) {
Log.d("GoogleSignOut", "Google sign out successful.")
} else {
Log.d("GoogleSignOut", "Google sign out failed.")
}
}.await()
//
oneTapClient.signOut().await()
} catch (e: Exception) {
Log.d("error","error signOut")
e.printStackTrace()
if (e is CancellationException) throw e
}
}
Функция входа в систему по электронной почте
fun signInWithEmailAndPassword(email: String, password: String) {
firebase.auth.signInWithEmailAndPassword(email, password)
.addOnCompleteListener { task ->
if (task.isSuccessful) {
// Sign in success, update UI with the signed-in user's information
val user = Firebase.auth.currentUser
if (user!!.isEmailVerified) {
onSignInResult(
SignInResult(
data = UserData(
userId = user.uid,
userName = user.displayName,
profileImageUrl = user.photoUrl?.toString()
),
error = null
)
)
} else {
onSignInResult(SignInResult(data = null, error = "Please verify your email address"))
}
} else {
// If sign in fails, display a message to the user.
onSignInResult(SignInResult(data = null, error = task.exception?.message))
}
}
}
Функция входа в Google
suspend fun signInWithIntent(intent: Intent): SignInResult {
val credential = oneTapClient.getSignInCredentialFromIntent(intent)
val googleIdToken = credential.googleIdToken
val googleCredentials = GoogleAuthProvider.getCredential(googleIdToken, null)
return try {
val user = auth.signInWithCredential(googleCredentials).await().user
SignInResult(
data = user?.run {
UserData(
userId = uid,
userName = displayName,
profileImageUrl = photoUrl?.toString()
)
},
error = null
)
} catch (e: Exception) {
e.printStackTrace()
if (e is CancellationException) throw e
SignInResult(
data = null,
error = e.message
)
}
}
Подробнее здесь: https://stackoverflow.com/questions/787 ... ed-android
Выход из Firebase не работает должным образом. Андроид [дубликат] ⇐ Android
Форум для тех, кто программирует под Android
-
Anonymous
1720727339
Anonymous
Когда я выхожу из учетной записи и вхожу в другую учетную запись, я вхожу в предыдущую учетную запись. Когда я выхожу из системы, закрываю и открываю приложение, я могу правильно войти в другую учетную запись. В приложении есть автоматический вход. Интересно то, что когда я открываю и закрываю приложение, когда оно входит в неправильную учетную запись, оно входит в правильную учетную запись.
Приведем пример: когда вы входите в систему под пользователем 1 и выйдите из системы, а затем войдите под пользователем 2, появится пользователь 1. но когда я открываю и закрываю приложение, появляется пользователь 2.
Обновление: я выхожу не только из Firebase, но и из Google. Однако проблема продолжается. Проблема в том, что после выхода из системы вошедшая в систему учетная запись становится предыдущей учетной записью, но она фиксируется при открытии и закрытии приложения. Поэтому я думаю, что аутентификация Firebase не обновляется правильно.
[b]Код выхода[/b]
suspend fun signOut() {
try {
auth.signOut()
//
val googleSignInOptions = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(context.getString(R.string.web_client_id))
.requestEmail()
.build()
val googleSignInClient = GoogleSignIn.getClient(context, googleSignInOptions)
googleSignInClient.signOut().addOnCompleteListener { task ->
if (task.isSuccessful) {
Log.d("GoogleSignOut", "Google sign out successful.")
} else {
Log.d("GoogleSignOut", "Google sign out failed.")
}
}.await()
//
oneTapClient.signOut().await()
} catch (e: Exception) {
Log.d("error","error signOut")
e.printStackTrace()
if (e is CancellationException) throw e
}
}
[b]Функция входа в систему по электронной почте[/b]
fun signInWithEmailAndPassword(email: String, password: String) {
firebase.auth.signInWithEmailAndPassword(email, password)
.addOnCompleteListener { task ->
if (task.isSuccessful) {
// Sign in success, update UI with the signed-in user's information
val user = Firebase.auth.currentUser
if (user!!.isEmailVerified) {
onSignInResult(
SignInResult(
data = UserData(
userId = user.uid,
userName = user.displayName,
profileImageUrl = user.photoUrl?.toString()
),
error = null
)
)
} else {
onSignInResult(SignInResult(data = null, error = "Please verify your email address"))
}
} else {
// If sign in fails, display a message to the user.
onSignInResult(SignInResult(data = null, error = task.exception?.message))
}
}
}
[b]Функция входа в Google[/b]
suspend fun signInWithIntent(intent: Intent): SignInResult {
val credential = oneTapClient.getSignInCredentialFromIntent(intent)
val googleIdToken = credential.googleIdToken
val googleCredentials = GoogleAuthProvider.getCredential(googleIdToken, null)
return try {
val user = auth.signInWithCredential(googleCredentials).await().user
SignInResult(
data = user?.run {
UserData(
userId = uid,
userName = displayName,
profileImageUrl = photoUrl?.toString()
)
},
error = null
)
} catch (e: Exception) {
e.printStackTrace()
if (e is CancellationException) throw e
SignInResult(
data = null,
error = e.message
)
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78736322/firebase-signout-not-work-as-expected-android[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия