Отсутствие AWS Appsync Cache и ошибка 403 на новом устройстве - PullRequest
2 голосов
/ 18 марта 2019

Я занимаюсь разработкой приложения на основе 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

...