Отсутствует разрешение API веб-ресурса - PullRequest
1 голос
/ 11 мая 2019

Я пытаюсь реализовать функциональность Api Web Share в моем тестовом веб-приложении, но, похоже, я не могу это сделать.Это код:

const newVariable: any = navigator;
{newVariable && newVariable.share && <IconButton aria-label="Share" onClick={async (e) => {
try {
  const id = await shareRepository.shareTrip(this.props.todolist)
  const url = "https://something.com/share/" + id
  await newVariable.share({
      title: 'Check my todolist for ' + this.props.todolist.trip.departure + ' - ' + this.props.todolist.trip.arrival,
      text: 'Check my todolist for ' + this.props.todolist.trip.departure + ' - ' + this.props.todolist.trip.arrival,
      url: url,
  })
} catch (error) {
  alert(error)
}
}}>
<ShareIcon />
</IconButton>}

Каждый раз, когда я пытаюсь использовать Firefox и Safari для iOS, я получаю сообщение об ошибке:

NotAllowedError: запрос не разрешенпользовательским агентом или платформой в текущем контексте, возможно, из-за того, что пользователь отказал в разрешении.

Если в этих браузерах я пытаюсь поделиться чем-то с google.com, я получаю собственный диалог выбора, с которымприложение для обмена.

Я не могу понять, почему.На этой странице нет обсуждения о разрешении: https://developers.google.com/web/updates/2016/09/navigator-share

ОБНОВЛЕНИЕ:

в Chrome для Android работает просто отлично, в Firefox для Android не работает.В Chrome Firefox и Safari (которые, как я полагаю, используют все три механизма safari) работают только в том случае, если я передам "", что означает саму страницу, или "https://something.com/share/", он сломается, если я передам "https://something.com/share/"+id: /

1 Ответ

1 голос
/ 11 мая 2019

Я понял, в чем была проблема, что очень раздражает.

Итак:

  const id = await shareRepository.shareTrip(this.props.todolist)

Этот вызов вызывает проблемы. Если я это прокомментирую, на iOS проблем нет.

Если я сохраню его, у меня вообще нет проблем с Android, но iOS будет жаловаться.

Так что мне нужно переосмыслить поток приложения, чтобы передать идентификатор извне события onClick.

...