@blocklet/js-sdk 旨在透過自動處理基於權杖的安全性的複雜性,使驗證過程無縫接軌。它在背景管理會話權杖和刷新權杖,讓您可以專注於建構應用程式的功能。
本指南將解釋自動權杖更新的過程,並示範如何使用 AuthService 來管理使用者驗證狀態,例如獲取個人資料和登出。有關所有可用方法的詳細列表,請參閱 AuthService API 參考。
自動會話權杖更新
SDK 採用一個標準且安全的驗證流程,使用短期的會話權杖和長期的刷新權杖。當您使用 SDK 的請求輔助工具(參見 發送 API 請求)發起 API 呼叫時,此過程是完全自動化的:
請求發起
SDK 會將目前的
sessionToken附加到您 API 請求的授權標頭中。權杖過期
如果
sessionToken已過期,伺服器會回應401 Unauthorized錯誤。自動刷新
SDK 的請求攔截器會捕捉到這個
401錯誤。然後,它會自動將儲存的refreshToken發送到驗證端點,以獲取新的sessionToken和refreshToken。請求重試
一旦接收並儲存了新的權杖,SDK 會透明地重試先前失敗的原始 API 請求。這次會使用新的、有效的
sessionToken。成功回應
伺服器驗證新權杖並返回成功的回應,然後將其傳回您的應用程式程式碼。
這整個過程對您的應用程式邏輯是透明的,確保使用者會話在不中斷使用者體驗的情況下保持活動狀態。
下圖說明了此流程:

使用 AuthService 管理使用者狀態
AuthService 為常見的驗證和使用者管理任務提供了一個高階 API。您可以透過主 SDK 實例存取它。
獲取目前使用者的個人資料
若要獲取目前登入使用者的個人資料資訊,請使用 getProfile 方法。
獲取使用者個人資料
import { getBlockletSDK } from '@blocklet/js-sdk';
const sdk = getBlockletSDK();
async function fetchUserProfile() {
try {
const profile = await sdk.auth.getProfile();
console.log('使用者個人資料:', profile);
return profile;
} catch (error) {
console.error('獲取個人資料失敗:', error);
}
}
fetchUserProfile();登出
logout 方法會使伺服器上使用者的目前會話失效。您可以不帶參數地呼叫它以登出目前設備,或傳入 visitorId 來登出特定會話,這對於管理跨多個設備的會話很有用。
登出使用者
import { getBlockletSDK } from '@blocklet/js-sdk';
const sdk = getBlockletSDK();
async function handleLogout() {
try {
// 登出目前會話
await sdk.auth.logout();
console.log('成功登出。');
// 重定向到登入頁面或更新 UI 狀態
} catch (error) {
console.error('登出失敗:', error);
}
}刪除使用者帳戶
對於希望刪除其帳戶的使用者,SDK 提供了 destroyMyself 方法。這是一個破壞性且不可逆的操作,會永久刪除使用者的資料。
刪除目前使用者的帳戶
import { getBlockletSDK } from '@blocklet/js-sdk';
const sdk = getBlockletSDK();
async function deleteAccount() {
// 向使用者確認此操作至關重要
if (window.confirm('您確定要刪除您的帳戶嗎?此操作不可逆。')) {
try {
const result = await sdk.auth.destroyMyself();
console.log(`DID 為 ${result.did} 的帳戶已被刪除。`);
// 執行清理並重定向使用者
} catch (error) {
console.error('刪除帳戶失敗:', error);
}
}
}後續步驟
現在您已經了解 @blocklet/js-sdk 中的驗證機制,您可能會想探索如何管理使用者的所有活動會話。