Работает только с Debug JS Remote на Android - PullRequest
0 голосов
/ 24 августа 2018

Я использую AsyncStorage для хранения токена JWT из AWS, но есть неожиданное поведение, которое я хочу прояснить.

Это мой текущий код:

const retrieveJwt = async () => {
  try {
    const value = await AsyncStorage.getItem('jwt');
    if (value !== null) {
      return value;
    }
    else{      
      let user = await Auth.currentAuthenticatedUser();
      let jwt = user.signInUserSession.accessToken.jwtToken;
      return jwt
    }
   } catch (error) {
     // Error retrieving data
     let user = await Auth.currentAuthenticatedUser();
      let jwt = user.signInUserSession.accessToken.jwtToken;
      return jwt
   }
}

// AppSync init
const client = new Client({
  url: AppSync.graphqlEndpoint,
  region: AppSync.region,
  auth:{
    type: 'AMAZON_COGNITO_USER_POOLS',
    jwtToken: async () => await retrieveJwt(),
  },
  disableOffline: true
})

Когда я запускаю это приложение, я получил это:

  • Реальное устройство Android без отладки: Ошибка
  • Реальное устройство Android с Удаленная отладка JS : Успех
  • Симулятор IOS без отладки: Успех
  • Симулятор IOS с Удаленная отладка JS : Успех

Проблема в том, что кажется, что токен JWT не извлекается ни AsyncStorage, ни классом аутентификации AWS, и я не могу разрешить его, потому что:

  1. Я работаю на реальном Android-устройстве без отладки: не работает.
  2. Я работаю на Android с отладкой: все работает.

Так что я не могу отладить, чтобы увидеть, что не так, потому что это работает, когда я пытаюсь отладить на Android.

Надеюсь, кто-нибудь может мне помочь.

1 Ответ

0 голосов
/ 10 апреля 2019

У меня была похожая проблема здесь.

Моя проблема была не в том, когда я прочитал значение из AsyncStorage, а в том, что я пытался сохранить какое-то значение.

Когда я использовал удаленный отладчик, все работало нормально, но без него появлялось Error.

Решением было преобразовать значение в строку перед сохранением их в хранилище .

...