Аутентификация Firebase с помощью Play Games получила ошибку SIGN_IN_REQUIRED, когда я удалил данные игры из настроек PlAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Аутентификация Firebase с помощью Play Games получила ошибку SIGN_IN_REQUIRED, когда я удалил данные игры из настроек Pl

Сообщение Anonymous »

Я пытаюсь исправить одну проблему в своей реализации. Я использую аутентификацию Firebase с Play Games для своего игрового приложения. Аутентификация в Play Games работает нормально, никаких проблем.
Но есть один случай, когда я удаляю игру и удаляю игровые данные из приложения Play Games (Настройки > Удалить Play Игровая учетная запись и данные > Удалить мои игровые данные). После переустановки я получаю код ошибки 4: SIGN_IN_REQUIRED, и если я закрываю игру и открываю ее снова, она работает нормально.
Изображение

Почему такое странное поведение при реализации, в первый раз не работает, но при втором запуске начинает работать.
вот мой код:

Код: Выделить всё

class FirebasePlayGamesAuth {

private var auth: FirebaseAuth = FirebaseAuth.getInstance()
private lateinit var gamesSignInClient: GamesSignInClient
private lateinit var webClientId: String

private var nativeAuthComplete = CompletableFuture()

//1
fun triggerLogin(activity: Activity): CompletableFuture {
webClientId = activity.resources.getString(R.string.default_web_client_id)
gamesSignInClient = PlayGames.getGamesSignInClient(activity)
val currentUser = auth.currentUser
if (currentUser == null) {
checkPlayGamesAuthStatus()
} else {
nativeAuthComplete.complete(currentUser)
}
return nativeAuthComplete
}

//2
private fun checkPlayGamesAuthStatus() {
gamesSignInClient.isAuthenticated.addOnCompleteListener { isAuthenticatedTask: Task ->
val isAuthenticated =
isAuthenticatedTask.isSuccessful && isAuthenticatedTask.result.isAuthenticated
if (isAuthenticated) {
requestFirebaseCredentials()
} else {
nativeAuthComplete.completeExceptionally(FirebasePlayGameAutoLoginFailed())
}
}
}

//3
private fun requestFirebaseCredentials() {
gamesSignInClient.requestServerSideAccess(webClientId, false)
.addOnCompleteListener { task: Task ->
if (task.isSuccessful) {
task.result?.let { serverAuthToken ->
authenticateWithFirebaseCredential(serverAuthToken)
} ?: run {
nativeAuthComplete.completeExceptionally(FirebaseServerSideAccessFailed())
}
} else {
task.exception?.let { exception ->
println("credential error: ${exception.message}")
if (exception is ResolvableApiException) {
println("auth resolution statred")
exception.startResolutionForResult(myActivity, 1101)
} else {
nativeAuthComplete.completeExceptionally(exception)
}

} ?: run {
nativeAuthComplete.completeExceptionally(FirebaseServerSideAccessFailed())
}
}
}
}

//4
private fun authenticateWithFirebaseCredential(idToken: String) {
val credential = PlayGamesAuthProvider.getCredential(idToken)
auth.signInWithCredential(credential).addOnCompleteListener { task ->
if (task.isSuccessful) {
nativeAuthComplete.complete(auth.currentUser)
} else {
task.exception?.let { exception ->
nativeAuthComplete.completeExceptionally(exception)
} ?: run {
nativeAuthComplete.completeExceptionally(
FirebaseAuthenticationWithCredentialFailed()
)
}
}
}
}
}
И в MainAcitivity

Код: Выделить всё

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
PlayGamesSdk.initialize(this)
firebasePlayGamesAuth.triggerLogin(this)
}

любое предложение или идея будет принята с благодарностью

Подробнее здесь: https://stackoverflow.com/questions/784 ... d-when-i-d
Ответить

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

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

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

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

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