OAuth 2.0 認証

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。

このドキュメントでは、OAuth 2.0 の認証コードのフローを実装するために呼び出すエンドポイント、およびアプリで認証を実装するために便利な他のエンドポイントについて説明しています。

Base URL

https://apis.roblox.com/oauth
Endpoints

GET v1/authorize
POST v1/token
POST v1/token/introspect
POST v1/token/resources
POST v1/token/revoke
GET v1/userinfo
GET .well-known/openid-configuration

認可

GET v1/authorize

ユーザーから Roblox アカウントとの認証についての権限を取得します。指定されたパラメータで構築された有効な権限 URL を期待します。このエンドポイントは PKCE 認証をサポートしています。

クエリーパラメーター

リクエスト

Example Request of Directing to Authorization Flow

https://apis.roblox.com/oauth/v1/authorize?client_id=816547628409595165403873012&redirect_uri=https://my-app.com/redirect&scope=openid&response_type=code&nonce=12345&state=6789

レポート

このエンドポイントを呼び出した後、ユーザーは code クエリーパラメーターで指定されたリディレクション URLにリダイレクトされます。認証コード:

  • 1分間のライフタイムがあります。
  • 1 回のみ償還できます。
  • 1回使用後は無効になります。

トークンエクスチェンジ

API にアクセスするトークンを取得するには、 認証コード をコンフィデンシャルトークンのセットと交換します。すべてのトークンエンドポイントは、2種類のクライアント認証をサポートしています:

  1. HTTP ベーシック認証プロトコル、および認証ヘッダーで、 Authorization: Basic Base64 encoded(<client_id>:<client_secret>) を含む。
  2. リクエストボディのクライアントIDと秘密をパラメーターとして指定します。

このエンドポイントから受信するさまざまなトークンの説明は次のリストにあります。

  • アクセストークン - クリエーターまたはユーザーからのアクセスを許可するトークンを表示します。これは、特定のスコープ、有効期、およびその他のアクセス属性を表示する文字列です。Roblox の認証サーバーがアクセストークンをアプリに発行すると、トークンは:

    • 15分間有効です。
    • 有効期限が切れる前に複数回使用できます。
    • アプリユーザーが権限を取り消すと、有効期限が切れる前に無効になります。
  • リフレッシュトークン - アプリケーションはリフレッシュトークンを使用して、アクセストークン、リフレッシュトークン、ID トークンを含む新しいセットを取得できます。リフレッシュトークン:

    • 90 日間有効です。
    • 有効期限が切れる前には、トークンを更新できません。
    • アプリユーザーが権限を取り消すと、有効期限が切れる前に無効になります。
  • IDトークン - ユーザーの身元を確認したことを証明します。その内容は、リクエストされたスコープによって変わり、ユーザーの Roblox ディスプレイ名とユーザーユーザーネームを含めることができます。IDトークンは、身元認証の目的でのみ使用され、Roblox リソースにアクセスできません。

POST v1/token

認証コードでトークンセットを取得する。

リクエスト

(x-www-form-urlencoded)

| キー | 値 | | -------------- | ---------------- | | code | <authorization code> | | code_verifier | <pkce code verifier value> | | grant_type | authorization_code | | client_id | <client_id> | | client_secret | 1> <client_secret

トークンの取得リクエストの例

curl --location --request POST 'https://apis.roblox.com/oauth/v1/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'client_id=840974200211308101' \
--data-urlencode 'client_secret=RBX-CR9...St12L' \
--data-urlencode 'grant_type=authorization_code' \
--data-urlencode 'code=yCnq4ofX1...XmGpdx'

レポート

トークンの取得に応答する例

{
"access_token": "...",
"refresh_token": "...",
"token_type": "Bearer",
"expires_in": 899,
"scope": "universe-messaging-service:publish"
}

POST v1/token

リフレッシュトークンでトークンセットを入手します。

リクエスト

(x-www-form-urlencoded)

| キー | 値 | | -------------- | ----------------- | | grant_type | refresh_token | | refresh_token | <refresh_token> | | client_id | <client_id> | | client_secret | <client_secret> |

トークンの更新のリクエストの例

curl --location --request POST 'https://apis.roblox.com/oauth/v1/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=refresh_token' \
--data-urlencode 'refresh_token=Ujfstayclfdlbm...BGydlsnU' \
--data-urlencode 'client_id=840974200211308101' \
--data-urlencode 'client_secret=RBX-CR9...St12L'

レポート

トークンの更新のリクエストの例

{
"access_token": "...",
"refresh_token": "...",
"token_type": "Bearer",
"expires_in": 899,
"scope": "universe-messaging-service:publish"
}

POST v1/token/introspect

トークンに関する情報を受信します。トークンが現在有効であるかどうかを確認します。API アクセス中の API には資源が必要ないため、ステートレスな検証に便利です。API アクセス中のトークンのみを使用してください。API アクセス中のトークンのみを使用してください。

リクエスト

(x-www-form-urlencoded)

| キー | 値 | | -------------- | ---------------- | | トークン | <access_token><refresh_token> または <id_token> | | client_id | 、1> <client_id>

イントロスペクトトークンリクエストの例

curl --location --request POST 'https://apis.roblox.com/oauth/v1/token/introspect' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'token=eyjlflabtfl...4gxqYBG' \
--data-urlencode 'client_id=840974200211308101' \
--data-urlencode 'client_secret=RBX-CR9...St12L'

レポート

イントロスペクトトークンの応答の例

{
"active": true,
"jti": "RT.2GcjvTduKzk6QY9tjTfm",
"iss": "https://apis.roblox.com/oauth/ 、
"token_type": "Bearer",
"client_id": "840974200211308101",
"aud": "4239311013248676173",
"sub": "1516563360",
"scope": "universe-messaging-service:publish",
"exp": 1676394509,
"iat": 1660842510
}

POST v1/token/resources

ユーザーがパーミッションを与えたユーザーリソースのリストを取得して、特定のリソースにアクセスできるかどうかをチェックします。これは状態変更のために便利です。

リクエスト

(x-www-form-urlencoded)

| キー | 値 | | -------------- | ----------------- | | token | <access_token> | | client_id | | client_secret | <client_id> |

トークン資源の例のリクエスト

curl --location --request POST https://apis.roblox.com/oauth/v1/token/resources' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'token=eyjlflabtfl...4gxqYBG' \
--data-urlencode 'client_id=840974200211308101' \
--data-urlencode 'client_secret=RBX-CR9...St12L'

レポート

トークン資源の取得に応答する

{
"resource_infos": [
{
"owner": {
"id": "1516563360",
"type": "User"
},
"resources": {
"universe": {
"ids": ["3828411582"]
}
}
}
]
}

POST v1/token/revoke

提供されるリフレッシュトークンを使用して、アーチャーセッションを取り消す。

リクエスト

(x-www-form-urlencoded)

| キー | 値 | | -------------- | | token | <refresh_token> | | client_id | <client_id> | | client_secret | <client_secret> |

リボークトークンリクエストの例

curl --location --request POST https://apis.roblox.com/oauth/v1/token/revoke' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'token=Ujfstayclfdlbm...BGydlsnU' \
--data-urlencode 'client_id=840974200211308101' \
--data-urlencode 'client_secret=RBX-CR9...St12L'

レポート

200 OK 空のレポートで

ユーザー情報

GET /v1/userinfo

Roblox ユーザー ID とその他のユーザーメタデータを取得します。

リクエスト

オーソリゼーションヘッダー : Authorization: Bearer <access_token>

ユーザー情報の取得の例

curl --location --request GET 'https://apis.roblox.com/oauth/v1/userinfo' \
--header 'Authorization: Bearer eyjlflabtfl...4gxqYBG'

レポート

ユーザーをユニークに識別するために、sub 値を使用できます。ユーザーは、Roblox ユーザー名とディスプレ表示名を変更できますので、ユーザーを参照するためにユニークな識別子として使用しないでください。

| Claim | 説明 | | サブ | Rob表示名oxユーザーID。 | |名前

プロフィールスコープのユーザーの例

{
"sub": "1516563360",
"name": "exampleuser",
"nickname": "exampleuser",
"preferred_username": "exampleuser",
"created_at": 1584682495,
"profile": "https://www.roblox.com/users/1516563360/profile」、
"picture": "https://tr.rbxcdn.com/03dc2a9abe7b1aacaaf93ea46d5c0646/150/150/アバターヘッドショット/Png"
}
プロフィールスコープなしのユーザーの例

{
"sub": "1516563360"
}

発見

OpenID Connect (OIDC) Discovery ドキュメントは、Open Cloud 構成の詳細に関するメタデータを含む JSON ドキュメントです。これには、サポートされているイденティ関連のスコープと要求のリストが含まれます。これを使用して、オープンクラウドの OAuth 2.0 エンドポイントと構成、例えばオープンクラウドのアービジョンポイント、トー

ディスカバリードキューメントの URL からディスカバリードキューメントを取得し、フィールドに手動でインスペクトするか、リスポンスのフィールドにカスタムライブラリマップを作成して、ワークフローを自動化するために応答スキーマにフィールドをマップできます。

GET .well-known/openid-configuration

レポート

すべての発見ドキュメントの応答は、次の例の応答と同じスキーマに従ります。

ディスカバリードキュメントレポートの例

{
"issuer": "https://apis.roblox.com/oauth/ 、
"authorization_endpoint": "https://apis.roblox.com/oauth/v1/authorized」。
"token_endpoint": "https://apis.roblox.com/oauth/v1/トークン"
"introspection_endpoint": "https://apis.roblox.com/oauth/v1/ token/introspect"
"revocation_endpoint": "https://apis.roblox.com/oauth/v1/token/revoke」。
"resources_endpoint": "https://apis.roblox.com/oauth/v1/トークン/資源],
"userinfo_endpoint": "https://apis.roblox.com/oauth/v1/userinfo」。
"jwks_uri": "https://apis.roblox.com/oauth/v1/certs」。
"registration_endpoint": "https://create.roblox.com/dash/credentials"
"service_documentation": "https://create.roblox.com/docs/reference/クラウド"
"scopes_supported": [
"openid",
"profile",
"email",
"verification",
"credentials",
"age",
"premium",
"roles"
],
"response_types_supported": ["none", "code"],
"subject_types_supported": ["public"],
"id_token_signing_alg_values_supported": ["ES256"],
"claims_supported": [
"sub",
"type",
"iss",
"aud",
"exp",
"iat",
"nonce",
"name",
"nickname",
"preferred_username",
"created_at",
"profile",
"email",
"email_verified",
"verified",
"age_bracket",
"premium",
"roles",
"internal_user"
],
"token_endpoint_auth_methods_supported": [
"client_secret_post",
"client_secret_basic"
]
}