我正在使用xero节点模块为带有NodeJS的xero创建一个应用程序。
出于某种原因,每一个刷新令牌的请求都会作为无效的授权返回
我已经拿到了代码,并在进行身份验证后立即尝试回调以获取刷新,这样我就可以确保这是最新的令牌,并且仍然可以做同样的事情。
下面的代码是当Xero传递回应用程序时调用的方法(callbackURL(
我得到的错误是";invalid_grant";它没有给出任何其他错误,也没有Xero中的错误日志,所以非常不熟练。
exports.callback = async function (req, res) {
const tokenSet = await xero.apiCallback(req.url);
try {
const newTokenSet2 = await xero.refreshWithRefreshToken('ClientID, 'ClientSecret', tokenSet.refresh_token);
}
catch(error){
console.log(`ERROR refresh: n ${JSON.stringify(error.response.body, null, 2)}`);
};
///console.log(tokenSet);
};
有什么想法吗?
如果没有看到更多的上下文代码,就很难判断。我假设您实际上并没有将"ClientID"one_answers"ClientSecret"作为字符串发送。
我建议您在这里使用一个完全初始化的利用openid客户端的客户端进行刷新:https://github.com/XeroAPI/xero-node-oauth2-app/blob/f1fbd3a08e840e54e8ce57f7050ddde6686208d8/src/app.ts#L233
或者在这里,通过传递客户端、secret和refresh_token来初始化一个空客户端并刷新:https://github.com/XeroAPI/xero-node-oauth2-app/blob/f1fbd3a08e840e54e8ce57f7050ddde6686208d8/src/app.ts#L236
我认为现在的情况是,您使用的是第二种方法,但客户端已经初始化。同样,在有限的背景下很难说出。如果这还不能解决问题,请发布更多详细信息。