3

我编写了一个简单的谷歌脚本函数来获取关注者并将它们保存在数据库中。接下来,我设置了触发器以在每天午夜运行该函数,但我得到了我必须授权才能运行该函数的错误。

function get_followers() {
   // Setup OAuthServiceConfig
   var oAuthConfig = UrlFetchApp.addOAuthService("twitter");
   oAuthConfig.setAccessTokenUrl("http://api.twitter.com/oauth/access_token");
   oAuthConfig.setRequestTokenUrl("http://api.twitter.com/oauth/request_token");
   oAuthConfig.setAuthorizationUrl("http://api.twitter.com/oauth/authorize");
   oAuthConfig.setConsumerKey("xxxxxxxxxxxxxxxxxxxxxx");
   oAuthConfig.setConsumerSecret("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
   var options =
      {
        "oAuthServiceName" : "twitter",
        "oAuthUseToken" : "always"
      };

  var result = UrlFetchApp.fetch("https://api.twitter.com/1.1/followers/ids.json?cursor=-1&screen_name=xxxxxxxxxxxxx&count=5000",options);
  var dataAll = Utilities.jsonParse(result);
  db_save(dataAll,'twitter_followers');
  Logger.log(dataAll);
 }

当我从 script.google.com 运行代码时,会出现 Twitter 授权弹出窗口并执行该功能。而当函数通过触发器运行时,它看起来第一次正确运行,而不是我必须再次授权脚本。

我怎样才能永久授权它?

我知道这是可能的,因为我将 Drupal 与同一个 Twitter 帐户集成,并且我只需要授权一次?

有什么想法吗?我应该存储 oAuthConfig 变量以使其永久化吗?有什么提示吗?

4

2 回答 2

2

似乎 Twitter 最近更新了推文中包含的可接受字符。例如,如果您尝试发布单引号 ( '),您的推文将被 API 拒绝,并且您的访问令牌将被撤销。因此,您每次都必须重新识别自己。

因此,请查看推文中包含的符号并尝试删除()'进行调试,看看问题是否来自于此。

更多关于这里的信息。

于 2013-07-24T12:26:41.243 回答
-1

出于某种未知原因,Google Script 的 OAuthService 只有在您为 CONSUMER_KEY 和 CONSUMER_SECRET 使用已保存的 ScriptProperties 时才能正常工作。我猜谷歌脚本需要它来保存令牌。这对我有用:

oauthConfig.setConsumerKey(ScriptProperties.getProperty("CONSUMER_KEY"));
oauthConfig.setConsumerSecret(ScriptProperties.getProperty("CONSUMER_SECRET"));
于 2014-06-13T18:28:46.050 回答