メインコンテンツへスキップ

UserSessionService

UserSessionServiceは、さまざまなデバイスやアプリケーションにわたるユーザーのログインセッションを取得および管理するためのAPIを提供します。このサービスは、ユーザーがアクティブなログイン場所を表示したり、どのアカウントにどのデバイスがアクセスしたかを確認したり、それらのセッションを

UserSessionServiceは、さまざまなデバイスやアプリケーションにわたるユーザーのログインセッションを取得および管理するためのAPIを提供します。このサービスは、ユーザーがアクティブなログイン場所を表示したり、どのアカウントにどのデバイスがアクセスしたかを確認したり、それらのセッションを管理したりできる機能を構築するために不可欠です。

このサービスの使用に関する実践的なガイドについては、ユーザーセッションの管理ガイドを参照してください。

メソッド

getMyLoginSessions()

現在のユーザー自身のログインセッションのページ分割されたリストを取得します。

パラメータ

  • options object — 設定オプションを含むオブジェクト。
    • appUrl string — クエリ対象のアプリケーションのベースURL。
  • params UserSessionQuery (default: { page: 1, pageSize: 10 }) — ページネーションとフィルタリングのためのオブジェクト。
    • page number (required) — 取得するページ番号。
    • pageSize number (required) — 1ページあたりのアイテム数。
    • status 'online' | 'expired' | 'offline' — ステータスによってセッションをフィルタリングします。

戻り値

  • Promise Promise — セッションのリストとページネーションの詳細を含むオブジェクトに解決されるPromise。

自分のオンラインセッションを取得する

javascript
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();

レスポンス例

json
{
  "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。

戻り値

  • Promise<UserSession[]> Promise — UserSessionオブジェクトの配列に解決されるPromise。

特定のユーザーのセッションを取得する

javascript
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に置き換えてください

レスポンス例

json
[
  {
    "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。

戻り値

  • Promise<UserSession[]> Promise — 新しいユーザーセッションを含む配列に解決されるPromise。

既存のセッションでログインする

javascript
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) — 使用されたウォレットのオペレーティングシステム。

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) — アイテムの総数。

UserSessionQuery

セッションクエリのフィルタリングとページネーションに使用されるオブジェクト。

  • page number (required) — 取得するページ番号。
  • pageSize number (required) — 1ページあたりのセッション数。
  • status 'online' | 'expired' | 'offline' — ステータスによってセッションをフィルタリングします。