mixiアプリ » 技術仕様(Graph API方式) » PC » ユーザ認可について
ユーザ認可について
mixiアプリの特徴は、何と言ってもプロフィール情報や友人の情報を使ったソーシャル性にあります。
また、mixiに蓄積された様々なコンテンツを利用することで高度なソーシャルアプリを作ることもできるでしょう。
これらは mixi Graph API や、JavaScript API の UserFlow API で扱うことができます。
これら API を利用するには、ユーザ認可を行う必要があります。
ユーザ認可の方法
アプリでユーザ認可を行うには、ユーザ認可API(mixi.auth()関数)を利用します。
ユーザ認可APIは JavaScript API で提供されていますので、JavaScript API の利用準備を行っておく必要があります。
mixi.auth()関数は以下のように実行します。
mixi.auth({ scope: "mixi_apps2 r_profile r_voice w_voice", state: "5c1b3eea390b53f54ad0975e9a4bbba2", server_state: "WErVieau7umEw1k2aRYOqXL-syCeRzZ3M4UBClLeZ2k" });
指定するパラメータは、それぞれ以下となります。
パラメータ名 | 指定する値 |
---|---|
scope | 認可を得たいスコープをスペース区切りで並べた文字列。 |
state | リダイレクトURIへリダイレクトする際に、渡されるパラメータ。 アプリケーションがセッションを持つ場合、このパラメータを使用してセッションが維持されている事を確認してください。 |
server_state | 事前に入手したserver_stateパラメータを指定してください。 ユーザの認可後のリダイレクト時に含まれるAuthorization Codeにこの値が紐づけられます。 |
scopeで指定するスコープについては、mixi Graph APIの各APIドキュメントをご確認ください。
stateパラメータを利用したセッション維持の確認がされない場合、アプリケーションにCSRF脆弱性が存在する事になります。これを防ぐために、セッションIDのハッシュ値等をstateパラメータに含めて下さい。そして、リダイレクトURIへリダイレクトした時に、セッションとstateパラメータの組み合わせが正しいことを確認してください。詳しくは下記URLをご参照ください。
http://openid-foundation-japan.github.io/rfc6749.ja.html#CSRF
CSRF対策のために、server_stateの利用を推奨しています。server_stateの入手方法については、mixi Graph APIの「server_stateの入手」をご参照ください。
mixi.auth()関数が実行されると、mixi Graph APIのユーザ認可を得るためのダイアログが表示されます。
ユーザが認可もしくは認可拒否を行うと、mixiアプリを表示しているiframeのsrcが書き換わり、アプリ登録時に設定されているリダイレクトURIに遷移します。
ユーザが認可した場合は以下のようにリダイレクトします。
http://example.com/callback?code=347ab1db9398d60b5ef3515e672d1e&state=5c1b3eea390b53f54ad0975e9a4bbba2
パラメータ名 | 概要 |
---|---|
code | Authorization Code |
state | mixi.auth() 関数で指定したstateの値 |
この Authorization Code から mixi Graph API のアクセスに必要なアクセストークンを取得することができます。取得の仕方については、mixi Graph API の リフレッシュトークン、アクセストークンの入手 をご参照ください。
なお、発行されたAuthorization Codeの有効期限は3分となります。
ユーザが認可拒否をした場合など、認可されなかった場合には以下のようにリダイレクトします。
http://example.com/callback?error=access_denied&state=5c1b3eea390b53f54ad0975e9a4bbba2
パラメータ名 | 概要 |
---|---|
error | エラー内容 |
state | ダイアログ呼び出し時に指定したstateの値 |
ダイアログが表示されないユーザ認可について
mixi.auth() 関数では、以下に挙げるスコープの認可をする場合、ユーザ認可のためのダイアログが表示されずに Authorization Code が発行されます。
- mixi_apps2
- r_profile
- r_profile_blood_type
- r_profile_birthday
- r_profile_gender
なお、これらのスコープと同時に他のスコープを指定した場合には、通常通りダイアログが表示されます。