なんでも作っちゃう、かも。

Arduino/Make/フィジカルコンピューティング/電子工作あたりで活動しています。スタバの空きカップを使ったスタバカップアンプなど製作。最近はもっぱらArduinoと3Dプリンタの自作に興味があります。

Arduinoで遊ぼう - TwitPicに画像をポストするライブラリ(OAuth対応)

Posted by arms22 on 2010年07月01日 5  0

お待たせ(?)しました!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つのパラメータを設定する必要があります。

  • TwitPic API Key
  • Consumer key
  • Consumer Secret
  • Access Token
  • Access Token Secret
TwitPic API KeyはTwitPicのデベロッパーページで、残りの4つはTwitterのデベロッパーページで簡単に取得できます。順を追って説明していきます。


ライブラリのインストール


次の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:
    あなたのメールアドレス。
登録するとAPI Keyが表示されます。登録したアプリケーションの情報はあとで確認・変更できます。


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。
登録するとアプリケーションの詳細ページにジャンプします。そのページの真ん中の方にConsumer keyとConsumer secretが表示されます。

consumer.png


Access Token/Access Token Secret


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

access_token.png


サンプルスケッチ


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


Arduinoをはじめようキット
スイッチサイエンス
売り上げランキング: 666




Prototyping Lab ―「作りながら考える」ためのArduino実践レシピ
小林 茂
オライリージャパン
売り上げランキング: 1606



Ads by Google

5 Comments

yoshi says..."有難うございます"
いつも参考にさせて頂いてます。
2011.03.17 23:45 | URL | #3JCJdutM [edit]
says..."管理人のみ閲覧できます"
このコメントは管理人のみ閲覧できます
2011.08.19 16:35 | | # [edit]
says..."管理人のみ閲覧できます"
このコメントは管理人のみ閲覧できます
2011.08.19 16:52 | | # [edit]
arms22 says..."Re: No title"
HTTP/1.1 404 Not Foundが返ってますね。
API無くなったのかな?
2011.08.19 23:58 | URL | #- [edit]
says..."管理人のみ閲覧できます"
このコメントは管理人のみ閲覧できます
2011.10.15 13:28 | | # [edit]

Leave a reply






管理者にだけ表示を許可する

該当の記事は見つかりませんでした。