feat(auth): rename external ids to asid psid
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
* 在 OAuth callback 之后、auth state machine 的 `syncingFacebookBackend` actor
|
||||
* 成功换取业务 token 之后调用 —— 用 accessToken 调 `/me` 拉用户资料(id / name
|
||||
* / email / picture),把 pictureUrl 写入 `UserStorage.setAvatarUrl()`、
|
||||
* id 写入 `AuthStorage.setFacebookId()`。
|
||||
* id 写入 `AuthStorage.setAsid()`。
|
||||
*
|
||||
* 端点:`https://graph.facebook.com/me?fields=id,name,email,picture.type(large)&access_token=...`
|
||||
* - `picture.type(large)` 返回 ~200px 头像 URL(默认 square 50px 太小)
|
||||
|
||||
@@ -89,28 +89,32 @@ export class AuthStorage implements IAuthStorage {
|
||||
return SpAsyncUtil.remove(StorageKeys.refreshToken);
|
||||
}
|
||||
|
||||
// ---- facebook id ----
|
||||
// ---- ASID / PSID ----
|
||||
|
||||
getFacebookId(): Promise<ResultT<string | null>> {
|
||||
return SpAsyncUtil.getString(StorageKeys.facebookId);
|
||||
async getAsid(): Promise<ResultT<string | null>> {
|
||||
return getStringWithLegacyFallback(
|
||||
StorageKeys.asid,
|
||||
StorageKeys.legacyFacebookId,
|
||||
);
|
||||
}
|
||||
setFacebookId(id: string): Promise<ResultT<void>> {
|
||||
return SpAsyncUtil.setString(StorageKeys.facebookId, id);
|
||||
setAsid(id: string): Promise<ResultT<void>> {
|
||||
return SpAsyncUtil.setString(StorageKeys.asid, id);
|
||||
}
|
||||
clearFacebookId(): Promise<ResultT<void>> {
|
||||
return SpAsyncUtil.remove(StorageKeys.facebookId);
|
||||
clearAsid(): Promise<ResultT<void>> {
|
||||
return removeKeys(StorageKeys.asid, StorageKeys.legacyFacebookId);
|
||||
}
|
||||
|
||||
// ---- facebook app id ----
|
||||
|
||||
getFacebookAppId(): Promise<ResultT<string | null>> {
|
||||
return SpAsyncUtil.getString(StorageKeys.facebookAppId);
|
||||
async getPsid(): Promise<ResultT<string | null>> {
|
||||
return getStringWithLegacyFallback(
|
||||
StorageKeys.psid,
|
||||
StorageKeys.legacyFacebookAppId,
|
||||
);
|
||||
}
|
||||
setFacebookAppId(id: string): Promise<ResultT<void>> {
|
||||
return SpAsyncUtil.setString(StorageKeys.facebookAppId, id);
|
||||
setPsid(id: string): Promise<ResultT<void>> {
|
||||
return SpAsyncUtil.setString(StorageKeys.psid, id);
|
||||
}
|
||||
clearFacebookAppId(): Promise<ResultT<void>> {
|
||||
return SpAsyncUtil.remove(StorageKeys.facebookAppId);
|
||||
clearPsid(): Promise<ResultT<void>> {
|
||||
return removeKeys(StorageKeys.psid, StorageKeys.legacyFacebookAppId);
|
||||
}
|
||||
|
||||
// ---- bulk clear ----
|
||||
@@ -120,9 +124,9 @@ export class AuthStorage implements IAuthStorage {
|
||||
if (!r1.success) return r1;
|
||||
const r2 = await this.clearRefreshToken();
|
||||
if (!r2.success) return r2;
|
||||
const r3 = await this.clearFacebookId();
|
||||
const r3 = await this.clearAsid();
|
||||
if (!r3.success) return r3;
|
||||
const r4 = await this.clearFacebookAppId();
|
||||
const r4 = await this.clearPsid();
|
||||
if (!r4.success) return r4;
|
||||
return this.clearLoginProvider();
|
||||
}
|
||||
@@ -136,12 +140,30 @@ export class AuthStorage implements IAuthStorage {
|
||||
if (!r3.success) return r3;
|
||||
const r4 = await this.clearRefreshToken();
|
||||
if (!r4.success) return r4;
|
||||
const r5 = await this.clearFacebookId();
|
||||
const r5 = await this.clearAsid();
|
||||
if (!r5.success) return r5;
|
||||
return this.clearFacebookAppId();
|
||||
return this.clearPsid();
|
||||
}
|
||||
}
|
||||
|
||||
async function getStringWithLegacyFallback(
|
||||
key: string,
|
||||
legacyKey: string,
|
||||
): Promise<ResultT<string | null>> {
|
||||
const value = await SpAsyncUtil.getString(key);
|
||||
if (!value.success) return value;
|
||||
if (value.data !== null && value.data.length > 0) return value;
|
||||
return SpAsyncUtil.getString(legacyKey);
|
||||
}
|
||||
|
||||
async function removeKeys(...keys: string[]): Promise<ResultT<void>> {
|
||||
for (const key of keys) {
|
||||
const result = await SpAsyncUtil.remove(key);
|
||||
if (!result.success) return result;
|
||||
}
|
||||
return Result.ok(undefined);
|
||||
}
|
||||
|
||||
function isLoginStatus(value: string): value is LoginStatusT {
|
||||
return Object.values(LoginStatus).includes(value as LoginStatusT);
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
* IAuthStorage 接口
|
||||
*
|
||||
* 对齐 Dart 端 `IAuthStorage`(lib/data/services/storage/iauth_storage.dart):
|
||||
* - loginToken / loginProvider / guestToken / deviceId / refreshToken / facebookId / facebookAppId 字段的 CRUD
|
||||
* - loginToken / loginProvider / guestToken / deviceId / refreshToken / ASID / PSID 字段的 CRUD
|
||||
* - `clearAuthData()` 批量清空登录态
|
||||
* - `clearBusinessAuthData()` 仅清空真实用户登录态,保留 guest token / deviceId
|
||||
* - 所有方法返回 `Promise<Result<T>>`,与 Dart `Future<Result<T>>` 对齐
|
||||
@@ -35,13 +35,13 @@ export interface IAuthStorage {
|
||||
setRefreshToken(token: string): Promise<Result<void>>;
|
||||
clearRefreshToken(): Promise<Result<void>>;
|
||||
|
||||
getFacebookId(): Promise<Result<string | null>>;
|
||||
setFacebookId(id: string): Promise<Result<void>>;
|
||||
clearFacebookId(): Promise<Result<void>>;
|
||||
getAsid(): Promise<Result<string | null>>;
|
||||
setAsid(id: string): Promise<Result<void>>;
|
||||
clearAsid(): Promise<Result<void>>;
|
||||
|
||||
getFacebookAppId(): Promise<Result<string | null>>;
|
||||
setFacebookAppId(id: string): Promise<Result<void>>;
|
||||
clearFacebookAppId(): Promise<Result<void>>;
|
||||
getPsid(): Promise<Result<string | null>>;
|
||||
setPsid(id: string): Promise<Result<void>>;
|
||||
clearPsid(): Promise<Result<void>>;
|
||||
|
||||
clearBusinessAuthData(): Promise<Result<void>>;
|
||||
clearAuthData(): Promise<Result<void>>;
|
||||
|
||||
@@ -13,8 +13,10 @@ export const StorageKeys = {
|
||||
guestToken: "guest_token",
|
||||
deviceId: "device_id",
|
||||
refreshToken: "refresh_token",
|
||||
facebookId: "facebook_id",
|
||||
facebookAppId: "facebook_app_id",
|
||||
asid: "asid",
|
||||
psid: "psid",
|
||||
legacyFacebookId: "facebook_id",
|
||||
legacyFacebookAppId: "facebook_app_id",
|
||||
|
||||
// user
|
||||
user: "user",
|
||||
|
||||
Reference in New Issue
Block a user