# ログインフローの概要
このページではログインフローの全体像と、推奨するログインフローについて説明します。
Mobage では OAuth 2.0 / OpenID Connect 1.0 ベースの 認可システムを提供しており、これらの仕様に紐づいた用語を用います。
不明な用語があれば、用語についての補足をご確認ください。
# ログインフローの選択
Mobageでは3種類のログインフローをサポートしており、Hybrid フローを推奨しています。 ここでは Hybrid フローについて説明します。
TIP
Hybrid フローは現在 Mobage JavaScript SDK を用いて実装する v2 を提供しており、v1 の新規利用開始は出来ません。 本ページでは、v2 についての説明となります。
# ログインフローの全体像
Hybrid フローのログインシーケンスは下記のようになります。

以下ではシーケンスに合わせて4つのフェーズに分けて説明します
- state値の発行
- Mobage へのログイン/アプリケーション認可状態の確認
- ゲーム開始ボタンの表示・実行
- 開発者サーバーでのログイン処理
# state値の発行
まずは後の各ステップで利用する state 値を発行します。 state 値は8文字以上256文字以内の文字列を指定してください。 発行した state は Developer Server で管理しているユーザーのログインセッションに紐づけて保存し、ゲームクライアントへ返却します。
# Mobage へのログイン/アプリケーション認可状態の確認
Mobage へのログイン状態および認可状態を確認するために Mobage JavaScript SDK(JSSDK) の mobage.oauth.getConnectedStatus() を呼び出します。
Mobage オープンプラットフォーム上で Mobage のログイン状態と認可状態の確認処理が完了すると、 mobage.oauth.getConnectedStatus() のコールバックを呼び出され、その際パラメータとして login / connect が返却されます。。
返却された login / connect パラメータの値から以下のようにユーザ状態を判別します。
| login | connected | 状態 |
|---|---|---|
| false | false | 未ログイン |
| true | false | 未認可 |
| true | true | ゲーム開始可能 |
# ゲーム開始ボタンの表示・実行
未ログイン・未認可の場合は各種規約文言と共にゲーム開始ボタンの表示を行う必要があります。 ゲーム開始ボタンはユーザ状態に応じ、未ログインの場合はモバゲーログインボタン・かんたん会員登録ボタンの二つを、未認可時はインストールボタンを表示します。
| 状態 | ボタン | 文言 |
|---|---|---|
| 未ログイン | かんたん会員登録 | 新規かんたん会員で始める |
| 未ログイン | モバゲーログイン | モバゲーIDで始める |
| 未認可 | インストール | ゲームを始める |
各ボタン押下時には以下のようにmobage.oauth.connect() を呼び出します。
かんたん会員登録
mobage.oauth.connect({
state: state,
requestType: "window", // "window" を指定すると、Hybrid フローで認可リクエストが送信されます
easyRegistration: true // true を指定すると、認可リクエストと同時にかんたん会員の発行が行われます
}, function(err, result) {
// callback 処理
});
モバゲーログイン / インストール
mobage.oauth.connect({
state: state,
requestType: "window"
}, function(err, result) {
// callback 処理
});
# 規約の表示について
各種ゲーム開始ボタンの表示に合わせ、以下のように規約リンクを表示して頂く必要があります。
- 規約文言は各種ボタンの真上に表示してください
- かんたん会員向けの規約文言「会員規約等(必読)に同意して」、それ以外は「同意事項等(必読)に同意して」としてください。

リンク押下時には以下のように JavaScript SDK の規約表示用 API mobage.ui.show を呼び出します。
同意事項等(必読)
mobage.ui.show( "client_agreement_menu");
会員規約等(必読)
mobage.ui.show( "client_agreement_menu",{ "isEasyRegistration": true});
# Redirect Endpointへセッション情報を送信
mobage.oauth.connect() を呼び出すと、以下のような result レスポンスが返ります。 resultには code, state, session_state のセッション情報が含まれます。
{
connected: true,
login: true,
response: {
code : "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
state : "mobage-connect_XXXXXXXXXXXXXXXXXXXXXXX",
session_state : "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}
}
Redirect Endpoint へこれらの code, state, session_state を送信します。
詳細については画面遷移せずにログインの Redirect Endpointへセッション情報を送信 をご確認ください。
# 開発者サーバーでのログイン処理
開発者サーバーでのログイン処理に必要な実装は下記となります。
- state の検証
- Token Request の送信
- ID Token の検証
- ログインセッションの発行
# state の検証
セッションに紐づけた state と リクエストパラメータから取得した state が一致するかを確認します。 state が一致しない場合は、不正なリクエストとみなし、エラーレスポンスを返して処理を終了してください。
# Token Request の送信
ID Token などの各種 Token 取得のためのリクエストを下記の要領で送信します。
URI
各環境での Token Endpoint の URI は以下のようになります。
| 環境 | URI |
|---|---|
| sandbox | https://sb-connect.mobage.jp/connect/1.0/api/token |
| service | https://connect.mobage.jp/connect/1.0/api/token |
パラメータ
application/x-www-form-urlencoded 形式で下記のパラメータを付与し、POSTメソッドで送信します。
| key | value |
|---|---|
| client_id | Developer Site で発行された Client ID |
| redirect_uri | Developer Site に登録した Redirect URI |
| code | Authorization Response で受け取った code |
| grant_type | authorization_code を指定します |
Client 認証
Hybird フローにおける Token Request では、 Client 認証を行う必要があります。 Client 認証を行うには Client ID と Client Secret を Basic 認証ヘッダーとして、あるいはフォームパラメータ client_id および client_secret として渡します。 Client ID と Client Secret は Developer Site 上でアプリケーション登録を行うことで発行される値です。
# ID Token の検証
Access Token の取得が成功した場合、レスポンスに含まれる ID Token の署名検証と JWT Claims Set の検証を行います。 ID Token は JWT 形式でエンコードされているため、サードパーティの JWT ライブラリ を利用して公開鍵を利用した JWT の検証を実装してください。
サンプルアプリケーションを実行する から配布している Java サンプルコードでは Java JWT: JSON Web Token for Java and Android を利用しています。
ID Token の検証の詳細については画面遷移せずにログインの ID Tokenの検証 をご確認ください。
# ログインセッションの発行
ID Token が妥当な場合、JWT Claims Set の sub 値が Mobage のユーザー ID となるので、このユーザー向けのログインセッションを発行します。 その際、Authorization Response で受け取った session_state パラメータをログインセッションと紐づけて保持してください。 保存した session_state パラメータは シングルログアウト連携に利用するパラメータです。
詳細は シングルログアウト連携 を参照してください。
# API
- mobage.init
- Mobage JavaScript SDK の機能を使うために必ず呼び出す必要があります。
- mobage.oauth
- mobage.ui.show
# 用語についての補足
| 用語 | 説明 |
|---|---|
| Authorization Code | Access Tokenを取得するために利用します。 code パラメータを指します。 |
| Authorization Request | Authorization Code を取得するためのリクエスト |
| Authorization Endpoint | Authorization Request を送信する先のURI |
| Redirection Endpoint | redirect_uri パラメータで指定する、Authorization Request に対するレスポンスを返すURI |
| Access Token | API を実行するために利用する Token。access_token パラメータを指します。 |
| Refresh Token | Access Token を再発行する際に必要な token です。 refresh_token パラメータを指します。Mobage Connect では90日間有効です。 |
| ID Token | JSON Web Token (JWT) 形式でエンコードされた、ユーザー認証情報を含む署名付きトークン。 |
| Token Request | Access Token や ID Token 等の各種 Token を取得するためのリクエスト |
| Token Endpoint | Token Requestを送信する先のURI |