Итак, я создаю веб-приложение, которое работает с coinbase. Интерфейс - это стандартная статическая страница с html и jquery, это очень ванильно. Серверная часть - это отдельное веб-приложение, созданное с помощью Spring 5 и имеющее кучу веб-сервисов RESTful.
Я захожу в свой login.html и вхожу в систему. Это означает, что я отправляю имя пользователя / пароль обратно в свой логин Spring Controller, и я получаю токен доступа, отправленный обратно в пользовательский интерфейс. Я помещаю это в файл cookie, а затем перезагружаю новую страницу с большой толстой кнопкой авторизации на этой странице.
Эта кнопка выполняет AJAX-вызов моего контроллера Spring RESTful, передавая токен, поскольку я хотел сделать эту конечную точку безопасной, которая отлично работает.
На внутренней стороне (или промежуточном программном обеспечении) я делаю RESTful-вызов Coinbase, чтобы начать процесс аутентификации Oauth2. Я читаю свой идентификатор клиента из файла свойств, передаю redirectURI и состояние. Все это отлично работает, доходит до Coinbase, а ответ - HTML. Я передаю его своему клиенту, интерфейсу, и у меня есть этот HTML-код, который является страницей авторизации Coinbase.
Теперь вот где это становится рискованным ... Я бэкенд-человек, поэтому я могу без проблем сделать этот RESTful-вызов на бэкэнде. Я получаю HTML-код, который должен быть страницей РАЗРЕШЕНИЯ, чтобы пользователь мог разрешить использование моего веб-приложения со своей учетной записью в coinbase. Я получаю HTML, и теперь я не понимаю, как правильно отобразить этот html на моей странице или на новой странице. Это мой недостаток знаний javascript и jquery.
Код AJAX в моем authorize.js выглядит так:
$.ajax({
url : 'http://localhost:8080/myapp-be/api/coinbase/authorization',
headers : {'mytoken' : mytoken},
dataType: 'html',
cache: false,
success: function(response) {
$("html").html(response);
}
});
Это правильный путь?
Я абсолютно могу принять вызов Coinbase, поместить его в свой браузер, и он легко откроет диалоговое окно авторизации Coinbase. Если я разрешаю, вводя свое имя пользователя / пароль, меня отправляют на страницу обратного вызова, которую я передал как uri перенаправления обратного вызова.
Но, насколько я понимаю, мы не хотели раскрывать идентификатор клиента кому бы то ни было. Вот почему мой бэкэнд делает это, а мы просто возвращаем HTML. Итак, я задержан здесь. С моим текущим кодом я получаю много ошибок Javascript, и я просто знаю, что это не выход. У меня много проблем с CORS, и когда я пытаюсь авторизоваться, я получаю сообщение об ошибке, что не удается перейти на нужную страницу.
Как правильно вызвать API авторизации Coinbase. Их страница документации: https://developers.coinbase.com/docs/wallet/coinbase-connect/integrating Показано на шаге 1:
GET
https://www.coinbase.com/oauth/authorize?response_type=code&client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REDIRECT_URL&state=SECURE_RANDOM&scope=wallet:accounts:read
Итак, к сожалению, я немного не понимаю, как лучше всего решить эту проблему. Либо я делаю этот вызов GET от клиента, раскрывающего идентификатор клиента, если это нормально? Или я могу найти правильный способ отобразить возвращаемый HTML-код для страницы авторизации Coinbase?
Спасибо за помощь!