Реагируйте на загрузку собственного двоичного аудиофайла в API облачного хранилища Google в сборке ios с помощью плагина rn-fetch-blob, выдав ошибку 403 - PullRequest
0 голосов
/ 23 октября 2019

Я застрял при загрузке аудиофайла в Google Cloud API в сборке IOS. Так как он прекрасно работает в сборке Android. Я использую response-native-get-real-path, чтобы получить фактический путь в Android, а для ios я использую плагин Reaction-native-fs для извлечения фактического пути. Путь в ios идет правильно, но не знаю, почему он выдает ошибку.

Ниже приведены шаги:

  • Я использую плагин rn-fetch-blob длявызовите тип API 'PUT'.
  • Запросите API:

https://storage.googleapis.com/speech-recog-test/c0d816c1-f595-11e9-879e-a5fb31ee1873_1.mp3?GoogleAccessId=769971521036-compute@developer.gserviceaccount.com&Expires=1571835974&Signature=amCyE17qFkbrlxtoZri1IUTTCAt%2BXhYBGjh%2BNrfiVRP5IFKdHRXvqMjJ1BVtYGx6z25RSTO3KsOePlu3GF5%2FVDT%2FGB2kw1E9EH2mtoI94xM8Oq5YzIixspr3yjDMK35aOW%2Fx96b42MhXvd%2F0Gbd8DVpAN0lCeDoQ8iViEH6KKFsPrT2gxC4uZ4wHUljE37%2FjlA2scJxUHmGSa2BdFGmzaw2nwODjYvP0KkKoY9%2F%2FtSt58JbmjsEUS5aWyErlhNPKOQRXLNUdk1zxqP9fJDFmCjet7EsD8meWQZ2TdgQXwFXE7hH9n3zx2x9J8dAtlZm5VPq5yWKqtnsWo9WFDwcT6A%3D%3D

ипуть к файлу:

/ Пользователи / dev15 / Библиотека / Разработчик / CoreSimulator / Устройства / 0EA1E5C7-1421-48F3-AFF0-E2B36D23925B / данные / Контейнеры / Данные / Приложение / EFAF9B31-EFE1-41F7-9FCC-C6181244F495 / tmp / salamisound-6042622-озеро-берег-с-волнами-маленькими получить ответ в виде: {"data": "SignatureDoesNotMatch Рассчитанная нами подпись запроса не соответствует предоставленной вами подписи. Проверьте ваш секретный ключ Google и метод подписи. PUT \ n \ napplication / octet-stream \ n1571835974 \ n/speech-recog-test/c0d816c1-f595-11e9-879e-a5fb31ee1873_1.mp3","taskId":"jte862v5ane20xzbxdy5mk","type":"utf8","respInfo":{"status":403,"taskId»: "jte862v5ane20xzbxdy5mk", "redirects": ["https://storage.googleapis.com/speech-recog-test/c0d816c1-f595-11e9-879e-a5fb31ee1873_1.mp3?GoogleAccessId=769971521036-compute@developer.gserviceaccount.com&Expires=1571835974&Signature=amCyE17qFkbrlxtoZri1IUTTCAt%2BXhYBGjh%2BNrfiVRP5IFKdHRXvqMjJ1BVtYGx6z25RSTO3KsOePlu3GF5%2FVDT%2FGB2kw1E9EH2mtoI94xM8Oq5YzIixspr3yjDMK35aOW%2Fx96b42MhXvd%2F0Gbd8DVpAN0lCeDoQ8iViEH6KKFsPrT2gxC4uZ4wHUljE37%2FjlA2scJxUHmGSa2BdFGmzaw2nwODjYvP0KkKoY9%2F%2FtSt58JbmjsEUS5aWyErlhNPKOQRXLNUdk1zxqP9fJDFmCjet7EsD8meWQZ2TdgQXwFXE7hH9n3zx2x9J8dAtlZm5VPq5yWKqtnsWo9WFDwcT6A%3D%3D"],"timeout":false,"headers":{"Date":"Wed, 23 октября 2019 13:04:09 GMT", "alt-svc": "quic = \": 443 \ ";ма = 2592000;v = \ "46,43 \", h3-Q048 = \ ": 443 \";ма = 2592000, h3-Q046 = \ ": 443 \";ма = 2592000, h3-Q043 = \ ": 443 \";ма = 2592000" , "Сервер": "UploadServer", "х-guploader-uploadid": "AEnB2UoIrxC3SLnP9n4b3dzzb-7FE03yVY9EJwNDK9tfmHMmglikKQltXLZ1oOzqgIVO9Yam5SlHnK5C4b61hIIq-y8eDFwYXA", "Content-Type": "приложение / XML;charset = UTF-8 "," Content-Length ":" 364 "}," respType ":" blob "," state ":" 2 "," rnfbEncode ":" utf8 "}}

Ниже приведен код:

export function uploadAudioServiceRNFetchBlob (url, filePath) {
  return new Promise((resolve, reject) => {
    let fetchobj = RNFetchBlob.fetch('PUT', url, {}, RNFetchBlob.wrap(filePath))
    setTimeout(() => {
      fetchobj.uploadProgress((resive, total) => {
        console.log("#### progress", resive / total)
      })
    }, 100)
    fetchobj.then((res) => {
      if (res.respInfo.status === 200) {
        resolve(res)
      } else {
        reject(res)
      }
    }).catch((err) => {
      reject(err)
    })
  })
}

I am expecting the status should be 200 and file should upload successfully without any error message.

Note : This api call has not need any content-type and authorization in header.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...