gpt4 book ai didi

javascript - 对回调函数进行编码以接收访问 token 需要什么?

转载 作者:行者123 更新时间:2023-12-03 02:19:08 25 4
gpt4 key购买 nike

我正在尝试从 API ( https://github.com/Axosoft/node-axosoft/ ) 检索访问 token

要接收访问 token ,我们必须遵循以下流程:

var axo = nodeAxosoft(axosoftUrl, credentials);

axo.Api.getLoginUrl(function(url) {

// open browser using authorizationUrl and get code parameter from
//redirected Url after login

var code = 'code received from redirect';
axo.Api.exchangeCodeForToken(code);
});

由于我不明白如何获取该示例中的代码,也不明白 getLoginUrl 上的 url 参数是什么,所以我自己做了。

我有一个登录路由,可将用户重定向到 axosoft 网站进行身份验证,并将用户重定向到我的应用程序上的/authorization-process 路由。

在/authorization-process 上,我获取登录返回的代码,并调用一个应通过调用获取访问 token 的函数:

         axo.Api.exchangeCodeForToken(code);

代码:

var axosoft_code = req.query.code;

console.log(axosoft_code);

var token = request.exchangeAuthCodeForAccessToken(axosoft_code)
.then(function(token)
{
res.send(token);
})

方法:

var  connection = nodeAxosoft(client_url, credentials);

return new Promise(function(resolve, reject){
console.log("CODE: ", axosoft_code)
var token = connection.Api.exchangeCodeForToken(axosoft_code, function(token){
console.log(token);
resolve(token)
})

问题是返回null

我查看了 API lib api.js 并发现:

https://github.com/Axosoft/node-axosoft/blob/master/lib/api.js

function exchangeCodeForToken(code, callback) {
_credentials.code = code;
_access_token = '';

_authenticateCredentails(function (err) {
if (!err) {
callback(null, _access_token);
} else {
callback(err);
}
})
}

所以我有两个问题:

有人知道我做错了什么吗?

编写回调函数需要什么?

该方法需要一个回调函数,但我真的不知道该怎么做。

编辑:

return new Promise(function(resolve, reject){
var token = connection.Api.exchangeCodeForToken(axosoft_code, function(response,err){
if(!err){
console.log("token",response)
resolve(token);
}
else{
console.log("error",err)
resolve(token);

}
});
})

或者

var token = connection.Api.exchangeCodeForToken(axosoft_code, function(response,err){
if(!err){
console.log("token",response.body)
return response.body;
}
else{
console.log("error",err)
return err;
}
});

我给我的回调函数两个参数(响应和错误),我的问题是我陷入了 else 条件。err 的输出类似于 token ,但文档 here显示它应该是这样的:

{
"error" : "invalid_request",
"error_description" : "One or more parameters are missing: client_secret"
}

另一点是页面被卡住等待发生某些事情但什么也没有发生。

最佳答案

假设这是输入:

function exchangeCodeForToken(code, callback) {
_credentials.code = code;
_access_token = '';

_authenticateCredentails(function (err) {
if (!err) {
callback(null, _access_token);
} else {
callback(err);
}
})
}

您的通话格式应为:

exchangeCodeForToken(axosoft_code, function(err, response) {
if (err) {
// Deal with error
} else {
// Deal with response
}
}

Node 函数通常首先传递错误变量,因此您必须接收它们,这被认为是很好的做法。

关于javascript - 对回调函数进行编码以接收访问 token 需要什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49237901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com