mixi Graph APIが一般開発者に解放されたというので、早速試してみた!

ついに一般開発者にも公開ですね。

本日より、個人の方でもクレジットカード登録をすることでmixi Graph APIをご利用いただくことが可能になりました。

http://developer.mixi.co.jp/news/news_platform/12028

まずは、ガイドラインを読みましょう。
大事なことです。

デベロッパー登録の方法は省略して、アプリケーションの登録を行います。
忘れやすいので、「Developer Dashboard」のURLを残しておきましょう。
https://sap.mixi.jp/home.pl

mixi Graph APIを使うサービスの登録

ここで必要なものは以下の通り。

  • サービス名
  • ロゴ
  • サービス説明
  • サービスURL
  • リダイレクトURL
  • お問い合わせ用メールアドレス
  • 利用規約への同意

登録done.

それでは、デモサービスを作って動かしてみましょう。

認証認可

ドキュメントはこちらです。
認証認可手順(新方式) << mixi Developer Center (ミクシィ デベロッパーセンター)

仕様はOAuth 2.0 draft 10にのっとっているということで、和訳された仕様書が役に立ちますね!
The OAuth 2.0 Protocol

重要なところをチェックしていきましょう。

認可とAuthorization Codeの入手

リダイレクトで飛ばす先のURLはこんな感じですね。

はてなのOAuth対応のときに、PCやモバイルとかの画面出しわけはパラメータでやればいいのでは?って言ってしまいましたが、携帯電話でのリダイレクト処理には伝説的な"回数制限"なんてのが存在するとおもうので、分けることについて文句言いません。

Scopeはここで動的に指定されます。
種類は、API単位で別れていて、さらにReqd/Writeという感じですね。

  • r_profile People API,Groups API,People lookup API
  • r_voice Voice API (情報の取得のみ)
  • w_voice Voice API (投稿やコメント)
  • r_updates Updates API
  • w_share Check API
  • r_photo Photo API (情報の取得のみ)
  • w_photo Photo API (アルバム作成やフォト追加など)
  • r_message Message API (メッセージ取得など)
  • w_message Message API (メッセージの送信など)

わかりやすいですね。

動的なScope指定ということは、後から別のScopeを指定したときにどうなる?
ってのが気になりますが、試したところ、

  • 別のScopeで同意しても、RefreshTokenは同じのが渡される
  • RefreshToken更新したタイミングで、別のScopeがセットされたAccessTokenが渡される

つまりあるClientにたいして、1ユーザーに1つのRefreshTokenが発行され、最終的に同意した内容のScopeが割り当てられているようです。
それで、AccessTokenは発行されたタイミングでそのときのScopeがつくという感じですかね。

ちょっと試して気付いたのですが、mixiのドキュメントにはなくてOAuth 2.0の仕様に書いてある"state"パラメータもちゃんと対応されていましたよ。 追記されたようです。
stateパラメータとは?Client→Server→Clientと引き回されて、セッション管理などに利用できるかもしれないパラメータですね。

実際の画面はこうなります。
ログイン画面は省略して同意画面はこうなりますね。

あ、私のmixiでの名前がさらされた件について。

リフレッシュトークン、アクセストークンの入手

仕様通りですね!
私が個人的に嫌っている、"ClientID/ClientSecretのBasic認証形式による指定"については、試していません。

APIへのアクセス

とりあえず自分のプロフィールを取得するようにしました。
デモサービスにたくさんScopeつけたら、ビビって誰も使いたくないでしょ。
このユーザー識別子などが共通なのかそうではないかなどは別の話で見ていきましょう。

アクセストークンの再発行

Facebookが対応していないこの機能、mixiさんは対応されています。さすがですね。

デモページ

OAuth 2.0 draft 10対応ということで、以前、SocialWeb Conference vol.6で紹介したfacebookのサンプルを改造して動かしました。
これで、今フローのどのへんにいるのか、必要なパラメータの説明とセットで体験してもらえるかも?

http://r-weblife.sakura.ne.jp/mixi_Graph_API/

まとめ

やはり、OAuth 2.0ベースだと実装が簡単でいいですね!
でも、本当に大事なのはそこではないのです。
これだけAPIがたくさん公開されたことが素晴らしいのです。

課金とかは別として、ユーザーデータはいろんなところで使われてなんぼのものが多いと思います。
いつになっても一般開発者に全然APIを解放できないあそこの会社にも見習ってもらいたいですね。

クリスマスイブですね。ロマンチックですね。
秋田はホワイトクリスマスになりそうですよ。
ではまたー。