Next JS - получить URL в getServerSideProps - PullRequest
0 голосов
/ 13 апреля 2020

Я использую следующий JS, и мне трудно получить полный URL-адрес из перенаправления.

Я выполняю поток oauth из Twitch, и после аутентификации Twitch перенаправляет обратно в мое следующее приложение по URL-адресу, например http://localhost:3000/auth/twitch/ - они содержат кучу дополнительных данных по этому URL-адресу перенаправления, например http://localhost:3000/auth/twitch/callback#access_token=4kfdiopdsjendc539c9234&scope=user_read&token_type=bearer

/pages/auth/callback.js

export async function getServerSideProps(context) {
  console.log(context);
  return {
    props: {},
  };
}

Я пытаюсь получить параметры запроса (например, access_token) из перенаправления имеют, но поскольку Twitch добавляет его на мой URL перенаправления с помощью #, кажется, ничто внутри context не обнаруживает его.

Я знаю, если я вручную изменю # в браузере до ? тогда context.query работает. Проблема в том, что я не могу диктовать, как Twitch атакует свои данные на URL.

Как я могу получить доступ к параметрам запроса?

1 Ответ

0 голосов
/ 13 апреля 2020

Это функция безопасности от Twitch (и многих других поставщиков OAuth). Из документов :

Маркер доступа находится во фрагменте URL, а не в строке запроса, поэтому он не будет отображаться в HTTP-запросах к вашему серверу. Фрагменты URI доступны из JavaScript с помощью document.location.ha sh.

Как говорится, фрагменты URL не отправляются на сервер и, следовательно, недоступны из getServerSideProps. Вместо этого вы можете использовать один из обратных вызовов на стороне клиента, например useEffect или componentDidMount.

Подробнее о обсуждение здесь

...