今回の目標は、Google Apps Script から Twitter の認証を経由して Tweet することにする。
Callback URLの指定
まず、Twitter の 連携アプリケーション管理画面 で Google Apps Script 用に Callback URL を設定する。
https://spreadsheets.google.com/macros/
Consumer key と Consumer secret の設定
Google ドキュメント(今回は Spread Sheet)に Script 用のプロジェクトを作成し、 プロジェクトプロパティを設定する。
プロジェクトプロパティ は、スクリプト エディタ の「ファイル>プロジェクトのプロパティ…」から設定する。 ユーザープロパティとプロジェクトのプロパティがあるが指定するのは「プロジェクトのプロパティ」。
ここでは以下の2つのキーを設定する。
- twitterConsumerKey: コンシューマーキー
- twitterConsumerSecret: コンシューマーシークレット
ここで指定した値は、スクリプトからは、
oAuthConfig.setConsumerKey(
ScriptProperties.getProperty("twitterConsumerKey"));
oAuthConfig.setConsumerSecret(
ScriptProperties.getProperty("twitterConsumerSecret"));
のように指定できる。キーとシークレットをoAuthConfig.setConsumerKey("XXXX") とコードに直接書いてももちろん動作する。
OAuth 認証をして Tweetする
コードはこんな感じ。
function oAuthTest() {
var oAuthConfig = UrlFetchApp.addOAuthService("twitter");
oAuthConfig.setAccessTokenUrl("https://api.twitter.com/oauth/access_token");
oAuthConfig.setAuthorizationUrl("https://api.twitter.com/oauth/authorize");
oAuthConfig.setRequestTokenUrl("https://api.twitter.com/oauth/request_token");
oAuthConfig.setConsumerKey(ScriptProperties.getProperty("twitterConsumerKey"));
oAuthConfig.setConsumerSecret(ScriptProperties.getProperty("twitterConsumerSecret"));
var payload = {
"status": "test from Google Apps " + new Date().getTime()
}
var options = {
"method" : "POST",
"oAuthServiceName" : "twitter",
"oAuthUseToken" : "always",
"payload" : payload
};
var result = UrlFetchApp.fetch(
"https://api.twitter.com/1.1/statuses/update.json", options);
Logger.log("result of RequestToken: " + result);
}
UrlFetchApp.addOAuthService で取得した OAuthConfig に
アクセス先のURLやコンシューマキー/シークレット を設定して、
Twitter の REST API にアクセスすれば、
認証画面が表示されて認証が完了する。
...
"status": "こんにちは① " + new Date().getTime()
...
のように日本語でも大丈夫。Twitter の REST API v1.1 の Documentation は こちらから。
ちなみに、UrlFetchApp.fetch を GETリクエストで使うときには、 options から method と payload を除去して、
var result = UrlFetchApp.fetch(
"https://XXXXX?" + encodeURIComponent(str));
のように、
encodeURIComponent を使うとよいみたい。
0 件のコメント:
コメントを投稿