将parameter passing给服务器(条带连接中的oAuthcallback)

我正在设置Stripe Connect(独立帐户)。 我处理授权和我的节点服务器上的access_token的检索。

用户可以访问链接MY_SERVER_URI/authorize并将被redirect到预定义的条带AUTHORIZE_URI

 app.get("/authorize", function(req, res) { // Redirect to Stripe /oauth/authorize endpoint res.redirect(AUTHORIZE_URI + "?" + qs.stringify({ response_type: "code", scope: "read_write", client_id: CLIENT_ID })); }); 

在用户授权条带连接后,他或她将被redirect到预定义的REDIRECT_URI,在这种情况下等于MY_SERVER_URI/oauth/callback ,其中执行以下脚本:

 app.get("/oauth/callback", function(req, res) { var code = req.query.code; // Make /oauth/token endpoint POST request request.post({ url: TOKEN_URI, form: { grant_type: "authorization_code", client_id: CLIENT_ID, code: code, client_secret: API_KEY } }, function(err, r, body) { var accessToken = JSON.parse(body).access_token; // Do something with your accessToken // For demo"s sake, output in response: res.send({ "Your Token": accessToken }); }); }); 

现在一切正常,应用程序能够获得accessToken 。 但是,这个accessToken需要保存,并且与从客户端授予访问权限的用户匹配。

因此,我的问题归结为,如何在oauth/callback GET请求中传递客户端参数(如客户端userId),或者在客户端处理服务器处理(例如$http GET请求参观uri)? 我想后面的不是推荐的选项。

我做了两次尝试:

  • 我尝试使用dynamicREDIRECT_URI来传递参数,但问题是Stripe需要首先指定alle指令(导致没有参数可以在redirecturl中传递)。
  • 我试图访问MY_STRIPE_URI/authorize$http GET请求,但这给了我明显的错误没有“访问控制 – 允许来源”标题出现在请求的资源

可以做什么?

一般情况下你的情况如下:

  1. 请求服务器上的某个路由并将用户的ID存储在那里: req.session.user = {id: '...'}
  2. 从该路线将用户redirect到第三方授权URL
  3. 在接收访问令牌的路由中,也将其存储在会话中: req.session.user.access_token = '...'
  4. 将该访问令牌用于对Stripe API的后续请求

注意:

  1. 不要试图破解authorization_code OAuthstream程
  2. 您可能会发现Grant更容易用于该types的OAuthstream,支持Stripe
  3. 有关评论

您必须将您的用户ID作为“状态”parameter passing,Stripe将在callback中将其返回。 我发现避免会议的唯一途径