【发布时间】:2020-04-21 03:56:34
【问题描述】:
我有一个不使用很多包的简单应用程序。所以我认为这将是试用 Deno 的绝佳机会,我需要的一个不是第三方模块的包是 Twitter API。我认为没问题,因为我不需要它包含的许多功能。还不如自己写!
所以我编写了一个函数,用于使用 Twitter 文档中的 doc 生成承载令牌:
function getOAuthBearer(consumer_key, consumer_secret) {
const basic = Buffer.from(`${consumer_key}:${consumer_secret}`).toString('base64')
const options = {
url: 'https://api.twitter.com/oauth2/token',
method: 'POST',
headers: {
'Authorization': `Basic ${basic}`,
'Content-Type': `application/x-www-form-urlencoded;charset=UTF-8`
},
body: querystring.stringify({
'grant_type': 'client_credentials'
})
};
return new Promise((resolve, reject) => {
request(options, (error, response, body) => {
if (error) reject(error);
else resolve(JSON.parse(body).access_token);
});
});
}
哪个有效!我得到了我的不记名令牌,所以我写了一个函数来从这个doc的请求示例中获取一些user_timeline信息
function getUserTimeline(bearer_token) {
const options = {
url: 'https://api.twitter.com//1.1/statuses/user_timeline.json?count=100&screen_name=twitterapi',
method: 'GET',
headers: {
'Authorization': 'Bearer ' + Buffer.from(bearer_token).toString('base64'),
}
}
return new Promise((resolve, reject) => {
request(options, (error, response, body) => {
if (error) reject(error);
else resolve(JSON.parse(body));
});
});
}
返回这个:
{ 错误:[ { 代码:89,消息:'无效或过期的令牌。' } ] }
这很奇怪,但我认为我可以使承载无效并请求一个新的承载,我为此编写了这个函数:
function invalideOAuthBearer(consumer_key, consumer_secret, bearer_token) {
const basic = Buffer.from(`${consumer_key}:${consumer_secret}`).toString('base64');
const options = {
url: 'https://api.twitter.com/oauth2/invalidate_token',
method: 'POST',
headers: {
'Authorization': `Basic ${basic}`,
'Content-Type': `application/x-www-form-urlencoded;charset=UTF-8`
},
body: querystring.stringify({
'access_token': bearer_token
})
};
return new Promise((resolve, reject) => {
request(options, (error, response, body) => {
if (error) reject(error);
else resolve(JSON.parse(body));
});
});
}
但这会返回:
{ 错误:[ { 代码:348,消息:'不允许客户端应用程序使此令牌无效。' } ] }
所以现在我有点卡住了,我尝试重新生成我的凭据,但这并没有多大作用。我在网上搜索,但只能找到有人说这是一个错误/基础设施问题的旧帖子,但由于有这么多应用程序使用 Twitter API,这对我来说似乎不太可能,当然,有些人只是建议使用像 @987654323 这样的包@,我愿意,但就像我说的 Deno 平台没有这样的包:(
【问题讨论】:
-
我认为您的this discussion 与您的问题有某种关系。
-
嗯,是的,看起来是这样。威胁消失后,我会在那里发帖
标签: javascript twitter oauth-2.0