使用Google Script发推文

时间:2014-09-22 20:16:40

标签: twitter oauth google-apps-script

我从this question提取了此代码。

应用作者的解决方案,我总是会收到此错误:enter image description here

我从我创建的推特应用程序中得到了我的密钥和秘密:

enter image description here

我已将应用配置为编写...

我做错了什么?

//post tweet
function oAuth() {
  var CONSUMER_KEY = "xxxx";
  var CONSUMER_SECRET = "xxxxx";
  ScriptProperties.setProperty("TWITTER_CONSUMER_KEY", CONSUMER_KEY);
  ScriptProperties.setProperty("TWITTER_CONSUMER_SECRET", CONSUMER_SECRET);
  var oauthConfig = UrlFetchApp.addOAuthService("twitter");
  oauthConfig.setAccessTokenUrl("https://api.twitter.com/oauth/access_token");
  oauthConfig.setRequestTokenUrl("https://api.twitter.com/oauth/request_token");
  oauthConfig.setAuthorizationUrl("https://api.twitter.com/oauth/authenticate");
  oauthConfig.setConsumerKey(ScriptProperties.getProperty("TWITTER_CONSUMER_KEY"));
  oauthConfig.setConsumerSecret(ScriptProperties.getProperty("TWITTER_CONSUMER_SECRET"));
  var options = {muteHttpExceptions: true,oAuthServiceName:'twitter',oAuthUseToken:'always'}
  var url = "https://api.twitter.com/1.1/statuses/user_timeline.json";
  var response = UrlFetchApp.fetch(url, options).getContentText();
  Logger.log(response);
}
function postTweet() {
  oAuth();
  Logger.log('oAuth complete');
  var status='Operational!';
  var options = {
    "method": "post",
    "oAuthServiceName": "twitter",
    "oAuthUseToken": "always",
    "payload":{"status":status}
  };
  var url = "https://api.twitter.com/1.1/statuses/update.json";
  Logger.log('begin post');
  var request = UrlFetchApp.fetch(url, options);
  Logger.log('post complete');
}

1 个答案:

答案 0 :(得分:3)

我也遇到了这个错误,直到我意识到你需要在Twitter中指定一个'CallBack URL':

Twitter CallBack URL

指定为“https://script.google.com”或“https://script.google.com/macros”允许我进行授权。我已经测试了这个,它目前让我发布您列出的代码。

但请注意,如果您尝试将相同的“状态”文本两次发布,则会引发以下错误:

Duplicate Status Error

这不是问题,因为您只需更改变量'Status'的值,但它第一次就把它扔了。