UserSessionServiceは、さまざまなデバイスやアプリケーションにわたるユーザーのログインセッションを取得および管理するためのAPIを提供します。このサービスは、ユーザーがアクティブなログイン場所を表示したり、どのアカウントにどのデバイスがアクセスしたかを確認したり、それらのセッションを管理したりできる機能を構築するために不可欠です。
このサービスの使用に関する実践的なガイドについては、ユーザーセッションの管理ガイドを参照してください。
メソッド
getMyLoginSessions()
現在のユーザー自身のログインセッションのページ分割されたリストを取得します。
パラメータ
- options
object— 設定オプションを含むオブジェクト。- appUrl
string— クエリ対象のアプリケーションのベースURL。
- appUrl
- params
UserSessionQuery(default:{ page: 1, pageSize: 10 }) — ページネーションとフィルタリングのためのオブジェクト。- page
number(required) — 取得するページ番号。 - pageSize
number(required) — 1ページあたりのアイテム数。 - status
'online' | 'expired' | 'offline'— ステータスによってセッションをフィルタリングします。
- page
戻り値
- Promise
Promise— セッションのリストとページネーションの詳細を含むオブジェクトに解決されるPromise。
例
自分のオンラインセッションを取得する
import { getBlockletSDK } from '@blocklet/js-sdk';
const sdk = getBlockletSDK();
async function fetchMySessions() {
try {
const sessionData = await sdk.userSession.getMyLoginSessions(
{},
{ page: 1, pageSize: 5, status: 'online' }
);
console.log('オンラインセッション:', sessionData.list);
console.log('オンラインセッションの合計:', sessionData.paging.total);
} catch (error) {
console.error('セッションの取得に失敗しました:', error);
}
}
fetchMySessions();レスポンス例
{
"list": [
{
"id": "z8V...",
"appName": "My Blocklet",
"appPid": "my-blocklet-pid",
"lastLoginIp": "192.168.1.1",
"ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) ...",
"updatedAt": "2023-10-27T10:00:00.000Z",
"status": "online",
"userDid": "zNK..."
}
],
"paging": {
"page": 1,
"pageSize": 5,
"total": 1
}
}getUserSessions()
特定のユーザーDIDのすべてのログインセッションを取得します。このメソッドは通常、管理コンテキストで使用されます。
パラメータ
- options
object(required) — ユーザーのDIDとオプションのアプリURLを含むオブジェクト。- did
string(required) — セッションを取得するユーザーのDID。 - appUrl
string— クエリ対象のアプリケーションのベースURL。
- did
戻り値
- Promise<UserSession[]>
Promise— UserSessionオブジェクトの配列に解決されるPromise。
例
特定のユーザーのセッションを取得する
import { getBlockletSDK } from '@blocklet/js-sdk';
const sdk = getBlockletSDK();
async function fetchUserSessions(userDid) {
try {
const sessions = await sdk.userSession.getUserSessions({ did: userDid });
console.log(`ユーザー ${userDid} のセッション:`, sessions);
} catch (error) {
console.error('ユーザーセッションの取得に失敗しました:', error);
}
}
fetchUserSessions('zNK...userDid...'); // 有効なユーザーDIDに置き換えてくださいレスポンス例
[
{
"id": "z8V...",
"appName": "My Blocklet",
"appPid": "my-blocklet-pid",
"lastLoginIp": "192.168.1.1",
"ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) ...",
"updatedAt": "2023-10-27T10:00:00.000Z",
"status": "online",
"userDid": "zNK..."
}
]loginByUserSession()
既存のユーザーセッションIDに基づいて新しいログインを開始します。これは、関連アプリケーション間でのシームレスなサインインなどの機能に使用できます。
パラメータ
- options
object(required) — ログインに必要なセッション詳細を含むオブジェクト。- id
string(required) — ログインに使用する既存のセッションのID。 - appPid
string(required) — ログインするアプリケーションのPID。 - userDid
string(required) — セッションに関連付けられているユーザーのDID。 - passportId
string(required) — ユーザーのパスポートのID。 - appUrl
string— アプリケーションのベースURL。
- id
戻り値
- Promise<UserSession[]>
Promise— 新しいユーザーセッションを含む配列に解決されるPromise。
例
既存のセッションでログインする
import { getBlockletSDK } from '@blocklet/js-sdk';
const sdk = getBlockletSDK();
async function loginWithSession(sessionDetails) {
try {
const newSessions = await sdk.userSession.loginByUserSession(sessionDetails);
console.log('新しいセッションで正常にログインしました:', newSessions[0]);
} catch (error) {
console.error('セッションによるログインに失敗しました:', error);
}
}
const existingSession = {
id: 'session_id_to_use',
appPid: 'target_app_pid',
userDid: 'zNK...userDid...',
passportId: 'passport_id_string'
};
loginWithSession(existingSession);データ構造
以下はUserSessionServiceで使用される主要なデータ構造です。
UserSession
特定のアプリケーションにおけるユーザーの単一のログインセッションを表します。
- id
string(required) — セッションの一意の識別子。 - appName
string(required) — セッションが開始されたアプリケーションの名前。 - appPid
string(required) — アプリケーションのPID。 - lastLoginIp
string(required) — このセッションで最後に確認されたIPアドレス。 - ua
string(required) — クライアントデバイスのUser-Agent文字列。 - createdAt
string— セッションが作成されたときのタイムスタンプ。 - updatedAt
string(required) — このセッションの最後のアクティビティのタイムスタンプ。 - status
'online' | 'expired' | 'offline'— セッションの現在のステータス。 - user
UserSessionUser— ユーザーに関する詳細情報。 - userDid
string(required) — セッションを所有するユーザーのDID。 - visitorId
string(required) — 訪問者/デバイスの識別子。 - passportId
string | null(required) — ユーザーのパスポートのID。 - extra
object(required) — 追加のメタデータ。- walletOS
'android' | 'ios' | 'web'(required) — 使用されたウォレットのオペレーティングシステム。
- walletOS
UserSessionUser
セッションに関連付けられたユーザーに関する詳細情報を含みます。
- did
string(required) — ユーザーの分散型識別子(DID)。 - fullName
string(required) — ユーザーのフルネーム。 - email
string(required) — ユーザーのメールアドレス。 - avatar
string(required) — ユーザーのアバター画像へのURL。 - pk
string(required) — ユーザーの公開鍵。 - role
string(required) — アプリケーション内でのユーザーの役割(例:「owner」、「admin」)。 - roleTitle
string(required) — ユーザーの役割の表示タイトル。 - sourceProvider
'wallet' | 'auth0' | 'nft'(required) — 認証に使用されたプロバイダー。 - sourceAppPid
string | null(required) — ユーザーデータを供給したアプリケーションのPID。 - remark
string— ユーザーに関する備考やメモ。
UserSessionList
ユーザーセッションのページ分割されたリスト。
- list
UserSession[](required) — ユーザーセッションオブジェクトの配列。 - paging
object(required) — ページネーションの詳細を含むオブジェクト。- page
number(required) — 現在のページ番号。 - pageSize
number(required) — 1ページあたりのアイテム数。 - total
number(required) — アイテムの総数。
- page
UserSessionQuery
セッションクエリのフィルタリングとページネーションに使用されるオブジェクト。
- page
number(required) — 取得するページ番号。 - pageSize
number(required) — 1ページあたりのセッション数。 - status
'online' | 'expired' | 'offline'— ステータスによってセッションをフィルタリングします。