将参数传递给服务器(在Stripe Connect中使用oAuth回调)
Passing parameters to the server (oAuth callback in Stripe Connect)
我正在设置这里解释的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
传递参数,但是问题是,条纹要求允许的url需要指定首先(导致不能在重定向中传递任何参数)url)。 - 我试图访问
$http
GET
请求的MY_STRIPE_URI/authorize
,但这给了我明显的错误没有' access - control - allow - origin '标头存在于所请求的资源
可以做什么?
你必须传递你的用户id作为"状态"参数和Stripe将返回它的回调。我发现避免会话
一般情况下,您的场景如下:
- 向服务器上的某些路由发出请求并存储用户id:
req.session.user = {id: '...'}
- 从该路由将用户重定向到第三方授权URL
- 在接收访问令牌的路由中,也将其存储在会话中:
req.session.user.access_token = '...'
- 在对Stripe API的后续请求中使用该访问令牌
注意:
- 不要试图破解
authorization_code
OAuth流 - 你可能会发现Grant更容易用于这种类型的OAuth流,Stripe是支持的
- 相关评论
相关文章:
- AngularJS:我可以跳过函数参数回调吗
- 要求未定义JS回调参数
- MeteorJS:在带有回调的vzaar api上正确使用wrapAsync
- 自引用回调
- 测试Angular Service解决错误回调中的promise
- 如何将一个JavaScript函数回调为多个函数
- JavaScript回调函数
- 用于回调的javascript参数
- 将json回调数据转换为日期
- 承诺在非节点式回调上使用Bluebird
- Safari Can't在Google Oauth回调后获取Uri片段
- 正在为oAuth回调重写$locationProvider.htmlMode
- 将参数传递给服务器(在Stripe Connect中使用oAuth回调)
- 谷歌OAuth通过gapi.signin2.渲染按钮在react app中没有击中回调
- 在打开Oauth弹出窗口后立即回调Facebook
- Firebase Google OAuth - Auth uid不同于先前已删除的电子邮件的回调返回的uid
- Passport-Google-OAuth回调在Web服务中使用时不工作
- OAuth.使用OAuth获取tweet时出现未定义错误.重定向方法的回调
- Node express react oauth在与react客户端应用程序的回调中授权后通过访问令牌
- 关闭Twitter Oauth登录弹出窗口,用回调重定向到parent