mixiのAPIが個人向けに公開されたので早速試してみた - フォトボイス
mixiのAPIがやっと一般公開
昨日、ついにmixiの提供する新しいGraphAPIが、個人開発者向けに公開されました!
APIを個人向けに開放するのは、今回が初めてのことです。
個人の方もmixi Graph APIがご利用可能になりました
新しいGraphAPIは、ボイス、フォト、メッセージ、チェック、更新情報、友人情報、などなど、色々と揃っていて、認証認可もOAuth2.0を使用しており、とっても使いやすく簡単です。
mixi Graph API » 技術仕様 » API共通仕様
どんな事が出来るかということですが、お遊びで、ねこのフォト付きボイスを投稿できる「今日のにゃんこボイス」というサンプルを作ってみましたので、興味がある人は使ってみて下さい。
ということで、具体的にどうプログラムすればいいかを解説してみようと思います。
あなたも早速ボイスのAPIを用いて、写真付きボイスを投稿してみましょう!
ソースコードはGitHubに上げておきました。
ちなみにコンシューマキーとコンシューマシークレットは失効させてますので、ご自分で書き変えてご利用ください。ConsumerKeyとSecretの管理は厳重に!絶対人に教えちゃダメだよ!
【GitHub】kyoro / mixi_graph_api_sample_photovoice
最近GoogleCodeからgithubに乗り換えたのだけど、便利ですねー
アプリの登録と、ConsumerKey / ConsumerSecretの発行
まずはSAPポータルでアプリを登録してConsumerKeyとSecretを発行してください。
初回はクレジットカードの認証などが必要です。
課金というわけではなく、信頼性の担保という意味らしいです。APIの利用は無料。
アプリの登録にはメアドの確認なども要求されるので、説明に従ってください。
登録が終わるとConsumerKeyとConsumerSecretが発行されます。
また、サービス登録時に設定したリダイレクトURLはプログラムでも使用するので
サービス設定とプログラムの同一性を保ってください。
サンプルプログラムを走らせてみる
githubに上げているサンプルを走らせてみます。
まず、constantsに書かれているCONSUMER_KEYとCONSUMER_SECRET、およびREDIRECT_URIを自分のものに書き換えます。
REDIRECT_URIは存在しないものでも大丈夫です。適当なものを設定してください。
変更はこれだけでOKです。
では実行。
perl post.pl
すると
Aauthorize request in this page : https://mixi.jp/connect_authorize.pl?client_id=07c440f6acc01d7ae8f3&response_type=code&scope=w_voice&display=pc Please input redirest url's 'code' parameter :
こんな感じで表示されるので、表示されたURLにアクセスしてアクセスを認可してください。
その後、リダイレクトされたページのURLの末尾に付いているcode=以下の値をコピペし、Enterを押します。
done.と表示されたら、自分のボイスのページを見て見ましょう。
このように簡単に画像を投稿できます。
プログラムの解説
プログラムを解説します。といっても、すごい簡単です。
今回はperlで実装しましたが、どの言語もそんなに違いはありません。
クライアントライブラリなども使いません。使うのはLWPだけです(笑)
my $auth_uri = URI->new("https://mixi.jp/connect_authorize.pl"); $auth_uri->query_form_hash( client_id => CONSUMER_KEY, response_type => 'code', scope => 'w_voice', display => 'pc', ); print "Aauthorize request in this page :\n"; print $auth_uri->as_string(); print "\n\nPlease input redirest url's 'code' parameter :\n";
認可画面のURLを生成します。
静的なURLなので、CONSUMER_KEYを変更しないのであればaタグとかでもいいです。
my $ua = LWP::UserAgent->new; my $token_res = $ua->post('https://secure.mixi-platform.com/2/token',{ grant_type => "authorization_code", client_id => CONSUMER_KEY, client_secret => CONSUMER_SECRET, code => $code, redirect_uri => REDIRECT_URI, }); my $token_res_hash = JSON::decode_json($token_res->content); my $access_token = $token_res_hash->{access_token}; my $post_endpoint = sprintf("http://api.mixi-platform.com/2/voice/statuses/update?oauth_token=%s",$access_token); my $post_res = $ua->post( $post_endpoint, Content_Type => 'form-data', Content => { status => 'neko neko koneko', photo => [ "sample.jpg" ], } );
codeを受け取ったら、アクセストークンを取得します。
レスポンスはJSONで返ってくるので、デコードして格納します。
あとはAPIの仕様通りに、Content-Typeを設定して、パラメータを付けてPOSTします。
たったこれだけでOKです!
他にも面白そうなAPIが色々あるので、ぜひ皆さん遊んでみてね!