Как использовать API, основанный на протоколе OAuth2.0 - PullRequest
0 голосов
/ 23 января 2019

Я новичок в запросах API и JavaScript ...

Я пытаюсь использовать API, основанный на протоколе OAuth2.0 (Предоставление кода авторизации).

Не знаюне понимаю, как я могу пройти первый шаг:

  • почему мой запрос не генерирует перенаправление на redirect_uri?
  • после того, как перехватить параметры URL, содержащиеся в этом перенаправленииurl?

Вот мой фактический код:

const link = 'https://gw.hml.api.fr/group/espace-particuliers/consentement/oauth2/authorize?client_id=MY_API_CLIENT_ID&state=fz80ac780&duration=P6M&response_type=code&redirect_uri=https://gw.hml.api.fr/redirect';
  
const connect = document.getElementById('connect-btn')
if (connect) {
  connect.addEventListener('click', function(event) {
    event.preventDefault();

    fetch(link)
        .then(response => response.text())
          console.log(response);
        // HOW TO CATCH THE REDIRECTION_URI PARAMS ?

  });
};

Пример ответа:

<html lang="fr">
    <head>
        <meta charset="utf-8" />
    </head>
    <body>
        <p>Veuillez patienter...</p>
        <script type="text/javascript">
        /**
         * Delete cookies (iPlanetDirectoryPro, amlbcookie)
         */
        function removeCookie(cookieName) {
            cookieValue = "";
            cookieLifetime = -1;
            var date = new Date();
            date.setTime(date.getTime() + (cookieLifetime*24*60*60*1000));
            var expires = "; expires=" + date.toGMTString();
            document.cookie = cookieName+"=" + JSON.stringify(cookieValue) + expires+"; path=/; domain=.ene.fr";
        }
        removeCookie("iPlanetDirectoryPro");
        removeCookie("amlbcookie");

        /**
         * Parse url query
         */
        var parseQueryString = function( queryString ) {
            var params = {}, queries, temp, i, l;
            // Split into key/value pairs
            queries = queryString.split("&");
            // Convert the array of strings into an object
            for ( i = 0, l = queries.length; i < l; i++ ) {
                temp = queries[i].split('=');
                params[temp[0]] = temp[1];
            }
            return params;
        };
        var url = "https://gw.hml.api.fr/redirect?code=sD4F5RT3qPPJ15qFhrGu32YiumzN5D&state=fz80ac780&usage_point_id=225158214714453";

        // Get redirect_uri params
        var queryString            = url.substring( url.indexOf('?') + 1 );
        var params                 = parseQueryString(queryString);
        var forceNonAutomaticClose = params.close !== undefined && params.close == 'false';

        // Avoid closing popup
        if (forceNonAutomaticClose || !this.window.opener || this.window.opener.closed) {
            this.window.location.href = url;
        } else if (this.window.opener && !this.window.opener.closed) {
            // Close popup
            this.window.opener.location.href = url;
            this.window.close();
        }
    
        </script>
    </body>
</html>

Как мне заполнить мой код?

Спасибо!

...