今回の目標は、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 件のコメント:
コメントを投稿