Путаница с потоком авторизации Intuit Oauth: как извлечь код аутентификации и обменять на токены?

#node.js #express #oauth #intuit

Вопрос:

Я создаю приложение с реактивным узлом для доступа к API QuickBooks, и мой первый шаг — настроить поток авторизации из моего серверной части узла, используя intuit-oauth библиотеку. Я использую пример приложения OAuth2.0-demo-nodejs в качестве своего шаблона (https://github.com/IntuitDeveloper/OAuth2.0-demo-nodejs ).

Итак, первый шаг — создать запрос на авторизацию. Вместо того, чтобы создавать пользовательский интерфейс, в котором пользователи вводят свои данные, я жестко запрограммировал ключи своего приложения:

 app.get("/authUri", urlencodedParser, (req, res) => {
  oauthClient = new OAuthClient({
    clientId: "*****",
    clientSecret: "*****",
    environment: "sandbox",
    redirectUri: "http://localhost:8000/callback",
  });

  const authUri = oauthClient.authorizeUri({
    scope: [OAuthClient.scopes.Accounting],
    state: "intuit-test",
  });
  res.send(`this is authUri: ${authUri}`);
});
 

Этот код работает так, как должен, и возвращается authUri . Однако то, что делать дальше, сбивает меня с толку. В документации говорится, что я должен получить обратно код авторизации, который затем необходимо преобразовать в токен, и в примере приложения код для выполнения этого выглядит следующим образом:

 app.get('/callback', function(req, res) {

    oauthClient.createToken(req.url)
       .then(function(authResponse) {
             oauth2_token_json = JSON.stringify(authResponse.getJson(), null,2);
         })
        .catch(function(e) {
             console.error(e);
         });

    res.send('');

});
 

Я также прочитал в документации, что мне нужно перенаправить пользователей на страницу авторизации, создать пользовательский интерфейс, который инициирует перенаправление, а затем получить код авторизации (https://developer.intuit.com/app/developer/qbo/docs/develop/authentication-and-authorization/oauth-2.0). Итак, я смутно понимаю это, но знаю, с чего начать после отправки запроса на авторизацию. Предложения?

Ответ №1:

В потоке кода авторизации OAuth 2.0 после инициализации запроса авторизации конечный пользователь перенаправляется на страницу входа и вводит свои учетные данные. Затем он перенаправляется на обратный вызов_uri (redirect_uri) с параметром code. После этого вы должны сделать Post-запрос к конечной точке /token и отправить код. Когда все идет правильно, вы получаете accessToken.

Предоставление кода авторизации

Комментарии:

1. Можете ли вы помочь с потоком того, что делать, когда вы получите токен? Я сохранил информацию о токене в своей базе данных при обратном вызове, а затем перенаправил пользователя на страницу индекса. Я борюсь с тем, какие части относятся к индексу по сравнению с API, и как и где проверить, истек ли срок действия токена, и обновить его. Просто ищу базовую блок-схему того, что делать после сохранения токена в базе данных. Спасибо!

2. Я планирую использовать Node-Quickbooks SDK, расположенный здесь: npmjs.com/package/node-quickbooks