flickr 写真アップロード image upload by titanium android windows

以前rubyでやったことをtitaniumでしてみようかと
web画像をflickrに保存してみる by ruby - shoprevのブログ
基本は、このHow toの手順どおり
Flickr Services

  1. flickrアカウント作成
  2. API key取得 Sign in to Yahoo!
  3. Authentication Flow 編集
  4. 編集後、指定urlにアクセスしてmini-token取得

ここまで準備したら以下のソース実行してfulltoken取得

  var method = "flickr.auth.getFullToken";
  var api_key = "api key";
  var mini_token = "mini_token";
  var shared_secret = "secret";
  var format = 'json';
   
  var signature_string = shared_secret + "api_key" + api_key + "format" + format + "method" + method + "mini_token" + mini_token + "permswrite";
  var api_sig = Ti.Utils.md5HexDigest(signature_string);
 
  xhr = Titanium.Network.createHTTPClient();
  xhr.onload = function() {
    alert(this.responseText);
  };
  var url = 'http://api.flickr.com/services/rest/?format=json&method='+method+'&api_key='+api_key+'&mini_token='+mini_token+'&perms=write&api_sig='+api_sig;
  xhr.open('GET', url);
  xhr.send();            

あとは、以下な感じで、取得したfulltoken使って、
ギャラリーから選んだ写真をアップロードできましたー

  var xhr = require('xhr');
  Ti.Media.openPhotoGallery({
    success: function(e) {
      xhr.upload_flickr({
        success: function(e) {
        	alert(e);
        }
      },
      {photo:e.media,
       api_key:'aki key',
       token:'fulltoken',
       secret:'secret'
      });
    },
    allowEditing: false,
    mediaTypes:[Ti.Media.MEDIA_TYPE_PHOTO]
  });

xhr.js

exports.upload_flickr = function(o, params) {
  var xhr = Titanium.Network.createHTTPClient();
  var url = 'http://api.flickr.com/services/upload/';

  var api_sig=Ti.Utils.md5HexDigest(params.secret+"api_key" + params.api_key + "auth_token" + params.token);   xhr.open('POST', url);
  xhr.onload = function(e) {
    if (o.success) { o.success(e); }
  };
  xhr.setRequestHeader('enctype', 'multipart/form-data');
  xhr.send({
    photo: params.photo,
    api_key: params.api_key,
    auth_token: params.token,
    api_sig: api_sig
  });
};

参考
Flickr Services
Uploading Photos to a Service » Community Questions & Answers » Appcelerator Developer Center