# 登录流程概要
本页就登录流程的整体概念及建议使用的登录流程进行说明。 Mobage 提供 OAuth 2.0 / OpenID Connect 1.0 基础的 认证系统,使用与该规格关联的词汇。 若有不懂的词汇,请查看词汇相关补充。
# 选择登录流程
Mobage支持3种登录流程,建议采用 Hybrid 流程。 本页为 Hybrid 流程的相关说明。
提示
Hybrid 流程目前提供的,是使用 Mobage JavaScript SDK 装载的 v2 ,因此无法新开启 v1 的使用。本页针对 v2 进行相关说明。
# 登录流程的整体概念
Hybrid 流程的登录时序如下。
以下按照时序分别说明4个阶段。
- 发行state值
- Mobage 登录/应用软件授权状态的确认
- 游戏开始按钮的显示和执行
- 开发者服务器上的登录处理
# 发行state值
首先发行要在后续各步骤中使用的 state 值。 state 值请指定8个以上256个以内的字符串。 state 发行后,会与 Developer Server 上管理的用户登录会话进行关联后存储,并返回至游戏客户端。
# Mobage 登录/应用软件授权状态的确认
调用 Mobage JavaScript SDK(JSSDK) 的 mobage.oauth.getConnectedStatus() ,以检查 Mobage 的登录状态和授权状态。在 Mobage 开放平台上的 Mobage 登录状态和授权状态的检查程序结束后,便会调用 mobage.oauth.getConnectedStatus() 的回调,届时 login / connect 会作为参数返回。 依返回的 login / connect 参数值,如下述判断用户状态。
login | connected | 状态 |
---|---|---|
false | false | 未登录 |
true | false | 未授权 |
true | true | 可开始游戏 |
# 游戏开始按钮的显示和执行
若是未登录或未授权的状态,游戏开始的按钮则必须伴随各种协议内容一同显示。游戏开始按钮的显示依用户状态而异,若是未登录的状态,会显示梦宝谷登录按钮以及简易会员登录的2个按钮;若是未授权则会显示安装的按钮。
状态 | 按钮 | 显示文字 |
---|---|---|
未登录 | 简易会员注册 | 新規かんたん会員で始める |
未登录 | 梦宝谷登录 | モバゲー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: ""redirect""
}, 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 认证
Hybrid 流程中的 Token Request 必须进行 Client 认证。要执行客户端认证,需作为基本认证报头或表是单参数 client_id 和 client_secret 传递 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。 |
Token Request | 为取得 Access Token 或 ID Token 等各種 Token 的请求 |
Token Endpoint | Token Request 发送目的地的URI |