mixi Developer Center (ミクシィ デベロッパーセンター)

mixiアプリ

mixiアプリ » 技術仕様(Graph API方式) » スマートフォン » ユーザ認可について

ユーザ認可について

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

なお、これらのスコープと同時に他のスコープを指定した場合には、通常通りダイアログが表示されます。

このページの上部へ