Мой сценарий заключается в том, что у меня есть приложение для Android, которое имеет серверный сервер. Я реализую возможность входа с помощью Google в качестве альтернативы для настройки учетной записи с указанными учетными данными.Какова роль URI переадресации в контексте мобильного приложения для Android с использованием собственного API-интерфейса?
На стороне сервера я использую LoopBack, который использует библиотеку Node/Express Passport для OAuth2. На стороне Android я использую современную библиотеку регистрации Google.
Библиотека входа в систему Android принимает все меры предосторожности, предлагая пользователю выбрать учетную запись Google для входа в систему. Как только это произойдет, библиотека предоставит мне токен сервера.
Этот сервер аутентификации маркер может затем быть передан/аутентификации/Google/обратный вызов? Лексема = ... на заднем конце, который затем регистрирует меня.
До сих пор все это работает на степени. Пока что мой back-end работает на моей машине разработки. В консоли API Google URI обратного вызова для ключа OAuth2 указывает на http://localhost:3000/auth/google/callback. В частности, в моем приложении для Android я успешно получаю токен аутентификации. Если я вручную вставлю это в Postman, запущенном на моей машине разработки, чтобы ПОЛУЧИТЬ до http://localhost:3000/auth/google/callback, он успешно аутентифицируется. Однако, если я попытаюсь выполнить окончательный фрагмент головоломки, так что само приложение передает токен серверному приложению, возникает ошибка несоответствия URI с перенаправлением. Это, я могу только предположить, состоит в том, что HTTP-запрос от Postman на том же компьютере содержит «localhost» в заголовке хоста. Но запрос от чего-либо еще имеет IP-адрес компьютера в заголовке хоста.
Во-первых, хотя я, как правило, понимаю поток OAuth2, и я понимаю, что цель обратного вызова заключается в том, что сам сервер Google возвращает токен аутентификации на ваш сервер в контексте веб-приложения, чего я не полностью понимать релевантность URI обратного вызова в случае, когда приложение получает токен аутентификации, а затем выполняет задачу передачи маркера самому URI обратного вызова обратного вызова.
Во-вторых, как я могу успешно передать токен аутентификации на мой сервер разработки и успешно пройти аутентификацию? Консоль Google API позволит мне указать localhost, но, очевидно, не IP-адрес локальной сети.
Проверьте здесь и посмотрите, отвечает ли это на ваш вопрос: http://stackoverflow.com/questions/28731646/google-oauth-2-0-redirect-uri-mismatch-error-for-cross-client-single-sign -on –
Кроме того, я знаю, что не ответит на все ваши вопросы, но у него есть хорошая возможность заставить вас отклеивать ошибку при перенаправлении. –
@ChantellOsejo Большое спасибо за ваши комментарии. Я опубликовал ответ сам ниже, после некоторых выводов, которые я сделал сегодня вечером, но дальнейшие мысли и помощь будут с благодарностью оценены. – Trevor