Arduinoで遊ぼう - TwitPicに画像をポストするライブラリ(OAuth対応)
お待たせ(?)しました!ArduinoからTwitPicに画像をポストするライブラリ「TwitPic」がTwitPicのOAuth APIに対応したよ!
TwitterのBASIC認証廃止に伴い、TwitPicのBASIC認証を使ったAPIが廃止され、ArduinoからTwitPicに画像をポストするライブラリが動かなくなっていました。今回、TwitPicがOAuthに対応した新しいAPIを用意してくれたので、そのAPIを使って画像をポストするようにライブラリを更新しました。
TwitPicのOAuth APIはv1とv2の2つがあって、v2はシグネチャの演算(SHA)が大変なのとTwitterへのポストを行ってくれないのでv1を使うことにしました。v1ならTwitterへのポストも行ってくれます。TwitPicのAPI仕様については次のURLを参照してください。
TwitPic Developers - API v1 » uploadAndPost (POST w/ OAuth)
http://dev.twitpic.com/docs/1/uploadAndPost/
従来、ライブラリにはユーザ名とパスワードの2つのパラメータを指定するだけで良かったけど、今回のOAuth対応版では次の5つのパラメータを設定する必要があります。
ライブラリのインストール
次のURLからライブラリをダウンロードして、Arduinoのライブラリフォルダ(OSXの場合~/Documents/Arduino/libraries、Windowsの場合My Documents/Arduino/libraries)にコピーしてください。
TwitPic-003.zip
http://code.google.com/p/arms22/downloads/detail?name=TwitPic-003.zip
TwitPic API Key
TwitPicのデベロッパーページでアプリケーションを登録してAPI Keyを取得します。
TwitPic Developers - Register an Application
http://dev.twitpic.com/apps/new
Consumer key/Consumer Secret
先ほどのAPI Keyと同じように今度はTwitterのデベロッパーページでアプリケーションを登録します。
Twitter Applications
http://dev.twitter.com/apps

Access Token/Access Token Secret
先ほどのアプリケーションの詳細ページの右側に「My Access Token」と書かれたリンクがあります。このリンクをクリックするとAccess TokenとAccess Token Secretが表示されます。

サンプルスケッチ
5つのパラメータは次の5つの変数を通してライブラリに渡します。↑で取得したパラメータをこれら変数に設定してください。これらの変数はライブラリ内から参照されます。
画像のみポストしたい場合は、upload関数を使ってください。画像と一緒にTLにメッセージを流したい場合は、uploadAndPost関数を使ってください。エンジョイ!
Arduinoで遊ぼう - TwitPicに画像をポストするライブラリ
http://arms22.blog91.fc2.com/blog-entry-287.html
TwitterのBASIC認証廃止に伴い、TwitPicのBASIC認証を使ったAPIが廃止され、ArduinoからTwitPicに画像をポストするライブラリが動かなくなっていました。今回、TwitPicがOAuthに対応した新しいAPIを用意してくれたので、そのAPIを使って画像をポストするようにライブラリを更新しました。
TwitPicのOAuth APIはv1とv2の2つがあって、v2はシグネチャの演算(SHA)が大変なのとTwitterへのポストを行ってくれないのでv1を使うことにしました。v1ならTwitterへのポストも行ってくれます。TwitPicのAPI仕様については次のURLを参照してください。
TwitPic Developers - API v1 » uploadAndPost (POST w/ OAuth)
http://dev.twitpic.com/docs/1/uploadAndPost/
従来、ライブラリにはユーザ名とパスワードの2つのパラメータを指定するだけで良かったけど、今回のOAuth対応版では次の5つのパラメータを設定する必要があります。
- TwitPic API Key
- Consumer key
- Consumer Secret
- Access Token
- Access Token Secret
ライブラリのインストール
次のURLからライブラリをダウンロードして、Arduinoのライブラリフォルダ(OSXの場合~/Documents/Arduino/libraries、Windowsの場合My Documents/Arduino/libraries)にコピーしてください。
TwitPic-003.zip
http://code.google.com/p/arms22/downloads/detail?name=TwitPic-003.zip
TwitPic API Key
TwitPicのデベロッパーページでアプリケーションを登録してAPI Keyを取得します。
TwitPic Developers - Register an Application
http://dev.twitpic.com/apps/new
- Application Title:
アプリケーション名を英語で。TwitPicのページで「from ~」に表示されます。 - Application Description:
アプリケーションの概要を入力してください。適当でOKです。 - Application Homepage:
アプリケーションのホームページのURLを入力してください。なければ自分のブログのURLでもOKです。 - Your Email:
あなたのメールアドレス。
Consumer key/Consumer Secret
先ほどのAPI Keyと同じように今度はTwitterのデベロッパーページでアプリケーションを登録します。
Twitter Applications
http://dev.twitter.com/apps
- アプリケーション名:
アプリケーションの名前を英語で。TL上で「from ~」に表示されます。 - アプリケーションの説明:
アプリケーションの概要を入力してください。これも適当でOKです。 - アプリケーションのウェブサイトURL:
なければ自分のブログのURLでOK。 - 所属会社/団体
空欄でOK。 - アプリケーションの種類:
「クライアントアプリケーション」を選んで下さい。 - Default Access type:
「 Read & Write」を選んで下さい。 - アプリケーションのアイコン:
好きなアイコンを選んで下さい。無くてもOK。

Access Token/Access Token Secret
先ほどのアプリケーションの詳細ページの右側に「My Access Token」と書かれたリンクがあります。このリンクをクリックするとAccess TokenとAccess Token Secretが表示されます。

サンプルスケッチ
5つのパラメータは次の5つの変数を通してライブラリに渡します。↑で取得したパラメータをこれら変数に設定してください。これらの変数はライブラリ内から参照されます。
- twitpic_api_key
- consumer_key
- consumer_secret
- access_token
- access_token_secret
#include <Ethernet.h>
#include <TwitPic.h> // ライブラリをインポート
#include "SampleImage.h"
// Your TwitPic API Key(key)
const prog_char twitpic_api_key[] PROGMEM = "Your TwitPic API Key";
// Your Twitter Consumer key(consumer_token)/Consumer Secret(consumer_secret)
const prog_char consumer_key[] PROGMEM = "Your Consumer key";
const prog_char consumer_secret[] PROGMEM = "Your Consumer Secret";
// Your Twitter Access Token (oauth_token)/Access Token Secret (oauth_token_secret)
const prog_char access_token[] PROGMEM = "Your Access Token";
const prog_char access_token_secret[] PROGMEM = "Your Access Token Secret";
TwitPic twitpic; // TwitPicのインスタンス
void sampleImageTransfer(Client *client)
{
for(uint32_t i=0; i<sizeof(sampleImage); i++){
client->print(pgm_read_byte(sampleImage+i)); // Flashメモリから画像を1byteづつ読み込んで送信
}
}
// ネットワーク環境に合わせて変更する
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = {
10, 0, 0, 177 };
void setup()
{
Ethernet.begin(mac, ip);
Serial.begin(57600);
delay(3000);
int ret = twitpic.uploadAndPost("Sample Image Post from Arduino", sizeof(sampleImage), &sampleImageTransfer); // 画像をポストする
if(ret < 0){
Serial.print("post failed : err code = ");
Serial.println(ret);
}
else{
Serial.println("OK.");
}
}
void loop()
{
}
画像のみポストしたい場合は、upload関数を使ってください。画像と一緒にTLにメッセージを流したい場合は、uploadAndPost関数を使ってください。エンジョイ!
Arduinoで遊ぼう - TwitPicに画像をポストするライブラリ
http://arms22.blog91.fc2.com/blog-entry-287.html
Prototyping Lab
―「作りながら考える」ためのArduino実践レシピ
―「作りながら考える」ためのArduino実践レシピ
posted with amazlet at 10.07.01
小林 茂
オライリージャパン
売り上げランキング: 1606
オライリージャパン
売り上げランキング: 1606







