isseium's blog

田舎に住むWebエンジニアのブログ

先日公開された mixi の Voice API (Graph API ) をブラウザとターミナルで試してみた

mixi Platform がようやく個人向けにいろいろできるようになったようです。


01/07 個人の方もmixiアプリスマートフォン版の提供が可能になりました
12/20 個人の方もmixi Graph APIがご利用可能になりました

というわけで、試しに、mixi ボイスにつぶやいてみました。(Graph API の Voice API を利用)

※2011年プログラミング初めは変なサービス作ってないでこれをネタにすべきだったなぁ。

0. 前提

mixi デベロッパー登録

すでにデベロッパー登録を済ませていて、これから先日公開されたAPI群を使おうとしているところという状態です。
まだデベロッパー登録を済ませていない方は こちら

ツール・知識

今回はあくまで実験なのでとても原始的なツールを使いますー

  • ブラウザがあること
  • curl が使えるターミナルがあること

1. 流れ

こんな感じの流れです

  • そもそも、なにができるようになったの
  • クレカ登録
  • サービスを追加する
  • 認証認可
  • API使ってみる
  • アクセストークンの有効期限が切れたら

2. 何ができるようになったの

mixi Platformの概要ページ を見ると個人のデベロッパーが使えるAPIはこんな感じ

API/アプリ クレカ登録済み クレカ未登録
アプリ PC版
アプリ スマートフォン
アプリ アドプログラム
Connect Graph API
Connect Plugin

で、今回個人向けに公開されたのは、mixiアプリスマートフォン版とmixi ConnectのGraph APIです。

3. クレジットカード登録

ここでできますー
https://mixi.jp/show_developer.pl

特に難しいこともないので詳細は省略

4. サービスを追加する

Developer Dashboard

https://sap.mixi.jp/home.pl からいろいろ行います。

パスワードを入力して、上の「mixi Graph API」をクリックしましょう

新規サービス登録
サービス名 任意
リダイレクトURL http://mixi.jp/connect_authorize_success.html
お問い合わせ用メールアドレス 受信できるメールアドレス

を入力して登録してください。
登録をすると、入力をしたメールアドレスにURLリンク付のメールが届きます。
メール内のリンクをクリックして、登録を完了します。

登録が完了するとこんな感じで表示されます。

クレデンシャル情報の確認

OAuth の Consumer Key と Consumer Secret が発行されますので、確認してください。

5. 認証認可

Authorization Codeを入手

利用端末によって、エンドポイントが違うようです。

PC/スマートフォン https://mixi.jp/connect_authorize.pl
携帯電話 http://m.mixi.jp/connect_authorize.pl

今回は、PC向けで行います。

エンドポイントにアクセスする際には、許可をいただくAPIなどの情報を一緒に送らなければいけません。
詳しい説明は ここ に任せて、今回は
「Voice API の 読み書き(r_voice, w_voice)」の許可をいただくこととします。

例)

https://mixi.jp/connect_authorize.pl?client_id=<コンシューマキー>&response_type=code&scope=r_voice%20w_voice&display=pc

上をブラウザに入力して、表示させます。



同意をすると「Success」が表示され、同時にブラウザのアドレスバーが次のようなURLになります。<英数字>部分がAuthorization Codeです。(発行から3分間有効)

http://mixi.jp/connect_authorize_success.html?code=<英数字>
アクセストークンなどの入手

注意: Authorization Code 発行から3分以内で行って下さい。(3分経ってしまった場合は再度発行してください)

ターミナルで次のコマンドを実行

$ curl -d grant_type=authorization_code -d client_id=<発行されたConsumer Key> -d client_secret=<発行されたConsumer Secret> -d code=<発行されたAuthorization Code> -d redirect_uri="<登録したリダイレクトURL>" https://secure.mixi-platform.com/2/token


アクセスに成功するとこんなのが戻ってきます

{"refresh_token":"<英数字の文字列>","expires_in":900,"access_token":"<英数字の文字列>","scope":"r_voice w_voice"}

expires_in はアクセストークンの有効期間(秒)だそうです。

6. API使ってみる

まずは自分のボイスのタイムライン
  • URL例
http://api.mixi-platform.com/2/voice/statuses/@me/user_timeline?oauth_token=<アクセストークン>
  • 結果

こーんな感じのjsonが返ってきます

友人のタイムライン一覧
  • URL
http://api.mixi-platform.com/2/voice/statuses/friends_timeline/?oauth_token=<アクセストークン>
  • 結果(略)
投稿してみよう
  • コマンド例
$ curl -H "Content-Type: application/x-www-form-urlencoded" -d status="Hello world" -d oauth_token=<アクセストークン> http://api.mixi-platform.com/2/voice/statuses
  • 結果
{"created_at":"Wed Jan 12 15:59:47 +0000 2011","text":"Hello world","user":{"url":"http://mixi.jp/show_friend.pl?uid=ocp3j5nje3bky","profile_image_url":"http://profile.img.mixi.jp/photo/user/ocp3j5nje3bky_672551537.jpg","id":"ocp3j5nje3bky","screen_name":"isseium"},"id":"ocp3j5nje3bky-20110113005947"}
  • 確認

http://mixi.jp/list_voice.pl

7. アクセストークンの有効期限が切れたら

有効期限切れ状態

次のjsonレスポンスがあります

{"error":"invalid_grant"}
再発行
  • コマンド例
$ curl -d grant_type=refresh_token -d client_id=<発行されたConsumer Key> -d client_secret=<発行されたConsumer Secret> -d refresh_token=<発行されたリフレッシュトークン> https://secure.mixi-platform.com/2/token
  • 結果
{"refresh_token":"<リフレッシュトークン>","expires_in":900,"access_token":"<アクセストークン>","scope":"r_voice w_voice"}

まとめ

Voice API の個人公開で、mixiボイスクライアントがどんどん出てきそうですね!

次回はVoiceAPIを使って、WebアプリかAndroidアプリを作りたいと思いますー。(公開されたmixiアプリスマフォ版と絡められればいいなぁ

追記:

POST送るブラウザかターミナルのどっちかで統一すればよかったなぁ…