Node.js 在OAuth2身份验证调用和重定向调用之间传递值

Node.js 在OAuth2身份验证调用和重定向调用之间传递值,node.js,oauth-2.0,callback,hapijs,Node.js,Oauth 2.0,Callback,Hapijs,我有一个简单的节点应用程序,它使用OAuth2。我们的应用程序调用另一个应用程序来授权我的用户,并将其发送回我的应用程序。 所以流是用户触发动作,它将它们重定向到外部服务器。成功登录后,他们将在我们的应用程序中重定向回。问题是我需要一些信息,比如第一次呼叫的用户信息,当他们以不同的端点返回我的应用程序时,这些信息会丢失。我正在使用和lib 如上所示,在第二次回调中,我并没有原始调用中的那个些信息。我猜我们可以使用缓存作为存储,甚至可以使用OAuth2请求的加密“状态”字段。试图知道做这些的标准方

我有一个简单的节点应用程序,它使用OAuth2。我们的应用程序调用另一个应用程序来授权我的用户,并将其发送回我的应用程序。 所以流是用户触发动作,它将它们重定向到外部服务器。成功登录后,他们将在我们的应用程序中重定向回。问题是我需要一些信息,比如第一次呼叫的用户信息,当他们以不同的端点返回我的应用程序时,这些信息会丢失。我正在使用和lib


如上所示,在第二次回调中,我并没有原始调用中的那个些信息。我猜我们可以使用缓存作为存储,甚至可以使用OAuth2请求的加密“状态”字段。试图知道做这些的标准方法。有什么建议吗?

您可以使用状态参数:

我没有使用和你相同的技术堆栈,但我有同样的问题。对于放入状态参数的数据,必须使用url base64编码。您可以在此处阅读更多有关内容:

//hapi routes

server.route(
  {
    method: 'GET',
    path: '/validate',
    handler: function (request, h) {
      var params = request.query;
      var userId = params.userId;
      var info: params.info;
      .....
      h.redirect(authorizationUri);
    }
  },
  {
    method: 'GET',
    path: '/callback',
    handler: function (request, h) {
      var token = getTokenUsingSimpleOAuth2Lib(request);
      //I do not have access to userId and info from orginal client request
      saveTokenWithUserIdAndInfo(token, userId, info);
    }
  }
);