Twitter app OAuth with node.js



以下"应该"在下面的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是否需要。

  • 我尝试交换使用的键构造函数使用apiPostKey/秘密,而post调用使用apiAccessKey/秘密
  • 我已经生成了新密钥并使用它们更新了配置。
  • 我已经验证了服务器时间正确

另外,应用程序设置页面上的"测试OAuth"按钮(https://apps.twitter.com/app/xxxxx/settings)在此消息中产生一个页面"对不起,该页面不存在!"请访问https://dev.twitter.com/apps/xxxxx/oauth。目前尚不清楚这告诉我什么,但是

事实证明,第一个子弹点是谎言。当该应用未重新加载交换配置时,我很可能"测试"。问题在于,访问关键应在帖子中使用,并且"帖子"密钥(实际上是消费者密钥)是OAuth构造函数中的相关值。

来自:https://dev.twitter.com/oauth/application-anly-anly

使用仅应用程序身份验证,您没有 经过身份验证的用户,这意味着对API的任何请求 需要用户上下文(例如发布推文)的端点不会 工作。但是,仍然可以使用的一组端点可以 具有更高的利率限制。

,它将无法:

发布推文或其他资源;

我建议您尝试将节点软件包用于Twitter:例如https://www.npmjs.com/package/twitter

最新更新