与 Intuit Oauth 授权流程混淆:如何提取授权代码并交换令牌?

Confusion with Intuit Oauth authorisation flow: how to I extract auth code and exchange for tokens?

我正在构建一个 React-Node 应用程序来访问 QuickBooks API,我的第一步是使用 intuit-oauth 库从我的节点后端设置授权流程。 我使用 OAuth2.0-demo-nodejs 示例应用程序作为我的模板 (https://github.com/IntuitDeveloper/OAuth2.0-demo-nodejs)。

所以第一步是创建授权请求。我没有在用户输入详细信息的地方构建 UI,而是在我的应用程序键中进行了硬编码:

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('');

});

我还在文档中读到我需要将用户重定向到授权页面,创建一个 UI 来启动重定向,然后 然后 得到授权码(https://developer.intuit.com/app/developer/qbo/docs/develop/authentication-and-authorization/oauth-2.0)。所以我模糊地理解这一点,但在发送授权请求后我知道从哪里开始。建议?

在 OAuth 2.0 授权代码流程中,发起授权请求后,最终用户将被重定向到登录页面并输入他的凭据。然后他被重定向到带有代码参数的 callback_uri (redirect_uri)。之后,您必须向 /token 端点发出 Post 请求并发送代码。当一切正常时,您将获得一个 AccessToken。

Authorization Code Grant