3

フォロワーを取得してデータベースに保存するための簡単なGoogleスクリプト関数を作成しました。次に、毎日真夜中に関数を実行するようにトリガーを設定しましたが、関数を実行するために承認する必要があるというエラーが発生しました。

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 を使用する場合にのみうまく機能します。トークンを保存するには、Google Script が必要だと思います。これが私のために働いたものです:

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