【发布时间】:2017-10-15 20:37:02
【问题描述】:
我已经设置了一个应用程序,并从“应用程序设置”页面 (https://apps.twitter.com/app/APP_ID/keys) 获取了消费者密钥和秘密。该应用具有“读写”权限。
我还在此页面上为我的用户帐户生成了访问令牌和密码,尽管我已经完成了 Oauth 流程的步骤,授权了应用程序并通过该路由检索了相同的令牌和密码。
如果我使用这些凭据从搜索 API(即https://api.twitter.com/1.1/search/tweets.json)请求,那么我会得到一个成功的响应。但是,当从用户时间线端点执行相同操作时,尽管已授权应用程序,但我收到 HTTP401 响应,显示“未授权”。
这是我正在做的一个例子:
import request from 'request-promise';
const twitterOauthConfig = {
consumer_key: process.env.TWITTER_CONSUMER_KEY,
consumer_secret: process.env.TWITTER_CONSUMER_SECRET,
access_token_key: 'MY USER TOKEN KEY',
access_token_secret: 'MY USER TOKEN SECRET'
};
const getRequestOptions = (user, tag) => {
return {
uri: 'https://api.twitter.com/1.1/statuses/user_timeline.json',
qs: {
q: `user_id=${user}&screen_name=${user}&tag=${tag}`
},
headers: {
Accept: '*/*',
Connection: 'close'
},
json: true,
oauth: twitterOauthConfig
};
}
const options = getRequestOptions('example_screen_name', 'example_hash_tag');
request(options)
.then((response) => {
// ...
});
有人知道我为什么会收到这个错误吗?
【问题讨论】:
-
我在使用仅应用程序身份验证时也遇到了类似的问题,并且可以使用相同的数据从 Postman 重新创建(消除此特定代码中存在错误的可能性)。