flickr 写真アップロード image upload by titanium android windows
以前rubyでやったことをtitaniumでしてみようかと
web画像をflickrに保存してみる by ruby - shoprevのブログ
基本は、このHow toの手順どおり
Flickr Services
- flickrアカウント作成
- API key取得 Sign in to Yahoo!
- Authentication Flow 編集
- 編集後、指定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