Прерывистое «неавтотиционировано: эта операция требует ошибки пользователя» с использованием данных Firebase Data ConnecAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Прерывистое «неавтотиционировано: эта операция требует ошибки пользователя» с использованием данных Firebase Data Connec

Сообщение Anonymous »

справочная информация < /h4>
Я использую подлинность данных Firebase Data Connect и Firebase в моем приложении Android. У меня также есть интегрированная проверка приложений Firebase, но в настоящее время он установлен в Undforced Mode. Я проверяю это, подтвердив firebase.auth.currentuser! = Null Когда мое приложение устранение. Зарегистрирует следующую ошибку GRPC: < /p>
Fatal Exception: e9.p0: UNAUTHENTICATED: unauthenticated: this operation requires a signed-in user
at io.grpc.Status.asException(Status.java:548)
at io.grpc.kotlin.ClientCalls$rpcImpl$1$1$1.onClose(ClientCalls.kt:300)
at io.grpc.internal.ClientCallImpl.closeObserver(ClientCallImpl.java:574)
at io.grpc.internal.ClientCallImpl.access$300(ClientCallImpl.java:72)
at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1StreamClosed.runInternal(ClientCallImpl.java:742)
at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1StreamClosed.runInContext(ClientCallImpl.java:723)
at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37)
at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:133)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
at com.google.firebase.concurrent.CustomThreadFactory.lambda$newThread$0(CustomThreadFactory.java:47)
at java.lang.Thread.run(Thread.java:1012)
< /code>
Эта ошибка прерывита, и я не смог найти последовательный способ ее воспроизведения. < /p>
Соответствующий код < /h4>
Трассия стека, приведенная выше, не ссылается на какие -либо из моих конкретных классов приложения или методов, непосредственно связанных с инициацией вызова данных. Он указывает на внутренние классы io.grpc и com.google.firebase.concurrent, предполагая, что сбой возникает глубже в уровне Firebase SDK или GRPC во время аутентифицированной обработки запросов. error seems internal and the Data Connect functions are auto-generated, I'm unsure which specific parts of my code are most relevant to debugging this UNAUTHENTICATED error.
If specific parts of my code would be helpful, please let me know in the comments, and I will update the question with the relevant snippets.
Requested code
Checking for user Аутентификация < /h6>
data class UserData(
val userId: String,
val username: String?,
val profilePictureUrl: String?
)

class GoogleAuthUiClient(
private val context: Context,
) {
private val auth = Firebase.auth

// Gets the signed in user details
fun getSignedInUser() = auth.currentUser?.run {
UserData(uid, displayName, photoUrl?.toString())
}

// Some other functions for signing in with CredentialManager...
}
< /code>
// Main app composable with some irrelevant code removed
// Checks if user is null to show Home screen for logged in users
// and Onboarding (Login) screen for users that are not logged in
@Composable
fun MyApp(
lifecycleScope: LifecycleCoroutineScope,
googleAuthUiClient: GoogleAuthUiClient,
application: android.app.Application
) {
val navController = rememberNavController()

val user = googleAuthUiClient.getSignedInUser()
if (user != null) {
DataConnectRepository.updateSignInInfo(user.username)
}

val startDestination =
if (user != null) {
Home
} else {
Onboarding
}

MyAppNavHost(
startDestination = startDestination,
lifecycleScope = lifecycleScope,
googleAuthUiClient = googleAuthUiClient
)
}
< /code>
MainActivity.kt
@AndroidEntryPoint
class MainActivity : ComponentActivity() {

private val googleAuthUiClient by lazy {
GoogleAuthUiClient(
context = this
)
}

override fun onCreate(savedInstanceState: Bundle?) {
enableEdgeToEdge()
super.onCreate(savedInstanceState)

FirebaseApp.initializeApp(this)
if (BuildConfig.DEBUG) {
Firebase.appCheck.installAppCheckProviderFactory(
DebugAppCheckProviderFactory.getInstance(),
)
} else {
Firebase.appCheck.installAppCheckProviderFactory(
PlayIntegrityAppCheckProviderFactory.getInstance(),
)
}

setContent {
MyAppTheme {
MyApp(
lifecycleScope = lifecycleScope,
googleAuthUiClient = googleAuthUiClient,
application = application
)
}
}
}
}
< /code>
DataConnectRepository.kt
object DataConnectRepository {
private val connector: DefaultConnector = DefaultConnector.instance

// init {
// if (BuildConfig.DEBUG) {
// connector.dataConnect.useEmulator()
// }
// }

fun updateSignInInfo(displayName: String?) {
CoroutineScope(Dispatchers.IO).launch {
try {
connector.upsertUser.execute(displayName!!)
} catch (e: Exception) {
Log.i("User ID", Firebase.auth.currentUser?.uid.toString())
Firebase.crashlytics.recordException(e)
e.printStackTrace()
}
}
}

suspend fun getActiveSubscriptions(): List {
try {
return connector.getMyActiveSubscriptions.execute().data.googlePlaySubscriptions
} catch (e: FirebaseNetworkException) {
e.printStackTrace()
throw NoInternetConnectionException(e)
} catch (e: Exception) {
if (e.cause is UnknownHostException || e.cause?.cause is UnknownHostException) {
throw NoInternetConnectionException(e)
} else {
Log.i("User ID", Firebase.auth.currentUser?.uid.toString())
e.printStackTrace()
throw e
}
}
}

class NoInternetConnectionException(cause: Throwable?) :
Exception("No internet connection available", cause)
}
< /code>
I can confirm that the user id of both User ID< /code> операторы журнала не являются нулевыми, когда происходит сбой. Unautenticated. < /Li>
Проверка приложения: проверял, что проверка приложений находится в бездонном режиме, поэтому не следует блокировать запросы по любой причине. пережил эту ошибку раньше, или есть какие -либо идеи, что делать, чтобы ее решить?

Подробнее здесь: https://stackoverflow.com/questions/796 ... er-error-w
Ответить

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

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

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

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

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