我一直在完整的Node / Express应用程序上成功使用xero-node npm软件包。
过程是:
连接到xero api以获取请求令牌并构建身份验证网址:
req.session.oauthRequestToken = token;
客户端被重定向到Xero登录。
'/ callback'函数获取oauthRequestToken并将其与来自客户端的新req.query.oauth_token进行比较:
if (req.query.oauth_verifier && req.query.oauth_token === req.session.oauthRequestToken
如果它们与req.session.oauthRequestToken相匹配,则将其设置为新令牌。
这曾经用于使用快速会话将会话通过Passport作为帮助程序保存到MongoDB中。
现在,我将我的应用分为前端和REST API应用。我已经停止使用Passport,现在仅使用JWT进行身份验证。因此不再使用会话或状态。
在这种情况下,使用req.session有什么选择?我的理解是,我不应该真正使用它,因为rest API是无状态的,但是我可能错了?
我考虑过要像每个JWT令牌一样向每个http请求传递oauthRequestToken,但是Xero auth屏幕无法实现,因为我无法控制。也许我可以使用诸如HTTP拦截器之类的方法从Xero表单添加标头?