先日公開された mixi の Voice API (Graph API ) をブラウザとターミナルで試してみた
mixi Platform がようやく個人向けにいろいろできるようになったようです。
01/07 個人の方もmixiアプリスマートフォン版の提供が可能になりました
12/20 個人の方もmixi Graph APIがご利用可能になりました
というわけで、試しに、mixi ボイスにつぶやいてみました。(Graph API の Voice API を利用)
※2011年プログラミング初めは変なサービス作ってないでこれをネタにすべきだったなぁ。
0. 前提
2. 何ができるようになったの
mixi Platformの概要ページ を見ると個人のデベロッパーが使えるAPIはこんな感じ
API/アプリ | クレカ登録済み | クレカ未登録 | |
---|---|---|---|
アプリ PC版 | ○ | ○ | |
アプリ スマートフォン版 | ○ | ||
アプリ アドプログラム | ○ | ○ | |
Connect Graph API | ○ | ||
Connect Plugin | ○ |
で、今回個人向けに公開されたのは、mixiアプリスマートフォン版とmixi ConnectのGraph APIです。
4. サービスを追加する
新規サービス登録
サービス名 | 任意 | |
---|---|---|
リダイレクト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"}
- 確認
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送るブラウザかターミナルのどっちかで統一すればよかったなぁ…