我按照here(独立帐户)说明设置了Stripe Connect。我在节点服务器上处理access_token
的授权和检索。
用户可以访问链接MY_SERVER_URI/authorize
,并将重定向到预定义的条带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
}));
});
用户授权Stripe Connect后,他或她将被重定向到预定义的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)?我想后者不是推荐选项。
我做了两次尝试:
REDIRECT_URI
传递参数,但是
问题是Stripe要求指定alle url
首先(导致重定向中不能传递任何参数
URL)。MY_STRIPE_URI/authorize
$http
请求访问GET
,但这给了我明显的错误没有'Access-Control-Allow-Origin'标头存在在请求的资源上 可以做些什么?
答案 0 :(得分:10)
您必须将您的用户ID传递为"州"参数和Stripe将在回调中返回它。我发现避免会话的唯一方法
答案 1 :(得分:1)