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

mixiアプリ

mixiアプリ » 技術仕様(Graph API方式) » モバイル » ユーザ認可について

ユーザ認可について

mixi Graph API や UserFlow APIを利用するには、ユーザ認可を行う必要があります。ここでは、mixiアプリモバイルでユーザ認可を行う方法について説明します。

ユーザ認可

mixiアプリモバイルからユーザ認可画面に遷移するには、formタグにてauth:graphapiという記述を使用します。メソッドはPOSTのみをサポートしています。
具体的には、HTMLのformタグが持つaction属性に以下のように記述します。

auth:graphapi

パラメータには以下を指定します。

パラメータ名 指定する値
response_type "code"
scope 半角スペースを区切り文字として、認可したいスコープを列挙した文字列
state RedirectURIへリダイレクトする際に、渡されるパラメータ。
アプリケーションがセッションを持つ場合、このパラメータを使用してセッションが維持されている事を確認してください。
server_state 事前に入手したserver_stateパラメータを指定してください。
ユーザの認可後のリダイレクト時に含まれるAuthorization Codeにこの値が紐づけられます。

scopeで指定するスコープについては、mixi Graph APIの各APIドキュメントをご確認ください。

stateパラメータを利用したセッション維持の確認がされない場合、アプリケーションにCSRF脆弱性が存在する事になります。これを防ぐために、セッションIDのハッシュ値等をstateパラメータに含めて下さい。そして、RedirectURIへリダイレクトした時に、セッションとstateパラメータの組み合わせが正しいことを確認してください。詳しくは下記URLをご参照ください。
http://openid-foundation-japan.github.io/rfc6749.ja.html#CSRF

CSRF対策のために、server_stateの利用を推奨しています。server_stateの入手方法については、mixi Graph APIの「server_stateの入手」をご参照ください。

以下に例を示します。

<form action="auth:graphapi" method="POST">
<input type="hidden" name="response_type" value="code" />
<input type="hidden" name="scope" value="mixi_apps2 r_profile r_voice w_voice" />
<input type="hidden" name="state" value="5c1b3eea390b53f54ad0975e9a4bbba2" />
<input type="hidden" name="server_state" value="WErVieau7umEw1k2aRYOqXL-syCeRzZ3M4UBClLeZ2k" />
<input type="submit" value="認可を行う" />
</form>

ユーザが認可もしくは認可拒否を行うと、アプリ登録時に設定されているRedirectURIに遷移します。

ユーザが認可した場合は、RedirectURIのパラメータとして、以下の値が返却されます。

パラメータ名 概要
code Authorization Code
state 認可画面遷移時に指定されていた場合、その値が引き継がれます。

この Authorization Code から mixi Graph API のアクセスに必要なアクセストークンを取得することができます。取得の仕方については、mixi Graph API の リフレッシュトークン、アクセストークンの入手 をご参照ください。
なお、発行されたAuthorization Codeの有効期限は3分となります。

ユーザが認可拒否をした場合など、認可されなかった場合には以下のようなパラメータが返却されます。

パラメータ名 概要
error エラー内容
state ダイアログ呼び出し時に指定したstateの値

ユーザによる確認を必要としないスコープについて

以下に挙げるスコープの認可をする場合、ユーザ認可のための画面が表示されずに Authorization Code が発行されます。

  • mixi_apps2
  • r_profile
  • r_profile_blood_type
  • r_profile_birthday
  • r_profile_gender

なお、これらのスコープと同時に他のスコープを指定した場合には、通常通りユーザ認可のための画面が表示されます。

このページの上部へ