Как отладить ошибку `redirect_uri_mismatch` на стороне сервера из Google Signin

Я пытаюсь использовать Google Sign-In с функцией firebase в соответствии с документацией Google для Вход через Google для серверных приложений, однако сталкиваюсь с ошибкой redirect_uri_mismatch (в отличие от примеров в этой документации, я использую SDK Node.js от Google).

Общий процесс, которому я следую, заключается в использовании SDK javascript Google для запроса offlineAccessCode() от пользователя, отправки этого кода доступа на сервер (функция firebase), использования кода доступа для получения токена доступа и токена обновления и сохранения обновления. токен для последующего использования (это процесс, описанный в документации).

Может показаться, что значение термина redirect_uri_mismatch не требует пояснений, но, как указано в связанной документации, The Authorized redirect URI field does not require a value. Redirect URIs are not used with JavaScript APIs. Эта строка взята из раздела «Шаг 1. Создайте идентификатор клиента и секрет клиента» и объясняет, как настроить учетные данные клиента OAuth. Это единственный раз в документации, где упоминается URI перенаправления, и нет указаний на то, что URI перенаправления необходим, когда сервер использует код авторизации для получения токена доступа.

Действительно, концепция URI перенаправления не имеет смысла в контексте облачной функции, использующей код доступа, полученный от клиента. Если серверу необходимо предоставить соответствующий redirect_uri в качестве клиента javascript (который, кажется, нигде не указан), я не уверен, что redirect_uri использует клиент javascript.

Итак, на этом фоне у кого-нибудь есть идеи, как решить эту redirect_uri_mismatch ошибку?

Или, в более общем смысле, любые указатели на реализацию этого потока аутентификации (моя облачная функция написана на javascript с использованием гугл нодджс сдк). Мне очень сложно отлаживать эту проблему.

Обновлять

Я понял, что причина, по которой сообщение об ошибке говорит redirect_uri_mismatch, заключается в том, что я тестировал различные значения как redirect_uri. Когда я удаляю (необязательный) параметр redirect_uri из запроса, серверы Google отвечают invalid_request: Missing parameter redirect_uri. Таким образом, Google дает понять, что это хочет URI перенаправления, даже несмотря на то, что документация, похоже, подразумевает, что это не обязательно для этого потока аутентификации. Более серьезная проблема заключается в том, что в документации не описывается, как настроить URI перенаправления для потока аутентификации в одностраничном приложении.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
273
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ах ХА! Ответ (как указано в этот другой С.О. отвечать) состоит в том, чтобы установить redirect_uri на "postmessage" на сервере (функция firebase в моем случае). Я понятия не имею, откуда взялся этот ответ (т.е. я не смог найти его в документах), но он работает.

Другие вопросы по теме