带有node.js的Twitter应用OAuth
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带有node.js的Twitter应用OAuth相关的知识,希望对你有一定的参考价值。
以下“应该”使用下面的message
的内容发布推文,即“Lorem ipsum dolor ......”
var OAuth = require("oauth").OAuth;
const twitterer = new OAuth( "https://api.twitter.com/oauth/request_token",
"https://api.twitter.com/oauth/access_token",
getContext().configuration.tasks.auto_tweet.apiAccessKey,
getContext().configuration.tasks.auto_tweet.apiAccessSecret,
// getContext().configuration.tasks.auto_tweet.apiPostKey,
// getContext().configuration.tasks.auto_tweet.apiPostSecret,
"1.0", null,"HMAC-SHA1");
// ... business logic
const message = "Lorem ipsum dolor..."
twitterer.post(
"https://api.twitter.com/1.1/statuses/update.json",
getContext().configuration.tasks.auto_tweet.apiPostKey,
getContext().configuration.tasks.auto_tweet.apiPostSecret,
({'status': message}),
"application/json",
function (error, data, response2) {
if(error){
failedTweets ++;
console.log("~~~~~~~~ Failed to send" , failedTweets, "tweets" );
console.log(error);
}
else{ sentTweets ++; }
console.log("~~~~~~~~ Sent" , sentTweets, "tweets" );
setTimeout(function(){
sendNextTweet();
},1000);
上面的结果,在twitter应用程序仪表板中填充的键是这个错误:
`{ statusCode: 401, data: '{"errors":[{"code":89,"message":"Invalid or expired token."}]}' }`
我在这里不知所措 - 这是一个应用程序需要发布到Twitter作为自己的专用用户,它不是在验证其他用户或任何类似的东西,所以我相信callback_url
是无关紧要的......在任何情况下,如果需要,我不知道callback_url
会是什么。
- 我试过交换使用的密钥s.t.构造函数使用
apiPostKey
/ secret而post
调用使用apiAccessKey
/ secret - 我已生成新密钥并使用它们更新配置。
- 我已经验证服务器时间是否正确
此外,应用设置页面(https://apps.twitter.com/app/XXXXX/settings)上的“测试OAuth”按钮会生成一个包含此消息的页面“抱歉,该页面不存在!”在https://dev.twitter.com/apps/XXXXX/oauth上。然而,目前尚不清楚这告诉了我什么
来自:https://dev.twitter.com/oauth/application-only
使用仅应用程序身份验证时,您没有经过身份验证的用户的上下文,这意味着对需要用户上下文的端点(例如发布推文)的API请求将不起作用。但是,仍然可用的端点集可以具有更高的速率限制。
它将无法:
发布推文或其他资源;
我建议你尝试使用twitter的节点包:例如https://www.npmjs.com/package/twitter
事实证明,第一个要点是谎言。当应用程序没有重新加载交换配置时,我很可能“测试”了。问题是应该在帖子中使用accessKey,而“post”键(实际上是使用者键)是OAuth
构造函数中的相关值。
以上是关于带有node.js的Twitter应用OAuth的主要内容,如果未能解决你的问题,请参考以下文章
node.js oauth-1.0a 适用于 Twitter API v1.1 但不适用于 v2
Node.js 护照 OAuth 2.0 身份验证:存储访问和刷新令牌的位置
有人使用带有 OAuth2.0 身份验证系统的 node.js 吗? [关闭]
带有 Rails 5 的 Omniauth-twitter 停止工作! OAuth::Unauthorized 403 Forbidden