【发布时间】:2020-04-13 00:45:11
【问题描述】:
我正在编写一个 API,它使用 oauth v1 API 从 twitter 获取数据并将其提供给我的 web 应用程序。
我有一个 api 端点,它从 Twitter 获取一组对象,这些对象代表用户创建的每个列表。
我有另一个 api 端点,给定一个列表 ID,它获取该列表中所有成员的数组。
我想将这两个端点合二为一,因此我的 web 应用程序可以请求“/api/getAllLists”,它将接收一个列表对象数组 (API 1),其中一个对象的属性是一个完整列表成员数 (API 2)。
我一直纠结于如何做到这一点 - 我以前使用过 Promise 和异步函数,但我不知道实现这一点的最佳方法。
router.get('/getAllLists', isLoggedIn, (req, res) => {
//oauth access credentials
let {oauthAccessToken, oauthAccessTokenSecret, username, user_id} = req.cookies.twitter || '';
//first api call to get array of list objects
consumer.get("https://api.twitter.com/1.1/lists/list.json?user_id="+user_id, oauthAccessToken, oauthAccessTokenSecret, (error, data, response) => {
if (error) {
console.log(error)
} else {
data = JSON.parse(data).map((list) => {
let newList = list;
//second API call, using list.id_str fromt he first call
consumer.get("https://api.twitter.com/1.1/lists/members.json?list_id="+list.id_str, oauthAccessToken, oauthAccessTokenSecret, (error, data, response) => {
if (error) {
console.log(error);
} else {
newList.contents = data;
return newList;
}
});
return newList;
})
res.send(data);
}
});
});
【问题讨论】:
标签: javascript node.js oauth twitter-oauth