Я занимаюсь разработкой приложения на основе AWS Amplify. При тестировании на 2-м локальном устройстве я заметил, что каждый запрос graphQL не выполняется, возвращая либо ошибку кэша, либо / или сетевую ошибку. Скорее всего, в зависимости от того, какой AppSyncResponseFetchers используется. Сначала я пробовал и сеть, и только сеть, но запросы все равно не выполняются.
Если я открою приложение на эмуляторе или на другом устройстве, ни одна из ошибок не появится, поэтому у меня есть основания полагать, что это не ошибка конфигурации. Я попытался удалить и переустановить приложение, но оно не работает.
Есть идеи относительно источника этой проблемы?
2019-03-17 17:24:44.718 32349-32559/com.myapp.android E/myapp.AWSDataService: Error during GraphQL Operation: Cache miss for operation com.amazonaws.amplify.generated.graphql.AmNewUserQuery@f7cd3d7
com.apollographql.apollo.exception.ApolloException: Cache miss for operation com.amazonaws.amplify.generated.graphql.AmNewUserQuery@f7cd3d7
at com.apollographql.apollo.internal.interceptor.ApolloCacheInterceptor.resolveFromCache(ApolloCacheInterceptor.java:138)
at com.apollographql.apollo.internal.interceptor.ApolloCacheInterceptor.access$100(ApolloCacheInterceptor.java:53)
at com.apollographql.apollo.internal.interceptor.ApolloCacheInterceptor$1.run(ApolloCacheInterceptor.java:78)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)
2019-03-17 17:24:44.720 32349-32600/com.myapp.android D/RetryInterceptor: Encountered non-retriable error. Returning response
2019-03-17 17:24:44.721 32349-32600/com.myapp.android E/myapp.AWSDataService: Error during GraphQL Operation: HTTP 403
com.apollographql.apollo.exception.ApolloHttpException: HTTP 403
at com.apollographql.apollo.internal.interceptor.ApolloParseInterceptor.parse(ApolloParseInterceptor.java:147)
at com.apollographql.apollo.internal.interceptor.ApolloParseInterceptor.access$100(ApolloParseInterceptor.java:54)
at com.apollographql.apollo.internal.interceptor.ApolloParseInterceptor$1.onResponse(ApolloParseInterceptor.java:83)
at com.apollographql.apollo.internal.interceptor.ApolloServerInterceptor$1$1.onResponse(ApolloServerInterceptor.java:110)
at okhttp3.RealCall$AsyncCall.execute(RealCall.java:141)
at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)
Edit:
Версия Appsync: 2.7+ (также 2.7.0)
Устройство 1: Samsung Galaxy S9 + Android 28 (работает)
Устройство 2: HTC 10 Android 26 (Не удалось)
Эмулятор 1: Pixel 2 Android 27 (Работает)
Эмулятор 1: Pixel 2 Android 25 (Работает)
Я уже видел эту проблему ранее для определенного запроса на моем основном устройстве некоторое время назад. Очевидно, я не знаю точно, что вызвало проблему, но я смог решить ее, войдя в свою учетную запись AWS и сохранив решатель. Не внося никаких функциональных изменений в распознаватель, он снова начал работать.
Редактировать 2:
При использовании отладчика Android ошибка 403 вызывается исключением InvalidSignatureException, «Ошибка из облака»
Возможно, связано: Пример аутентификации Amazon API Gateway IAM с сгенерированным JS SDK