RLMUser

Objective-C

@interface RLMUser : NSObject

Swift

@_nonSendable(_assumed) class RLMUser : NSObject, @unchecked Sendable

一个RLMUser实例代表一个 Realm 应用用户账户。

用户可能具有一个或多个与之关联的凭证。 这些凭证向身份验证提供者唯一标识用户,并用于登录 Atlas App Services 用户帐户。

请注意,用户对象仅通过 SDK API 发出,无法直接初始化。 可以从任何线程访问用户对象。

  • 标识此用户的唯一 Atlas App Services 字符串。 请注意,这与身份不同:用户可以有多个身份,但只有一个标识符。 请参阅 RLMUserIdentity。

    声明

    Objective-C

    @property (nonatomic, readonly) NS_SWIFT_NAME(id) NSString *identifier;

    Swift

    var id: String { get }
  • 返回当前链接到用户的身份数组。

    声明

    Objective-C

    @property (nonatomic, readonly) NSArray<RLMUserIdentity *> *_Nonnull identities;

    Swift

    var identities: [RLMUserIdentity] { get }
  • 用户用于访问 App Services 的刷新令牌。

    默认情况下,刷新令牌在颁发后 60 天过期。 您可以将应用的刷新令牌时间配置为 30 分钟到 180 天之间的任何时间。

    您可以从管理用户界面或管理 API 中为应用中的所有会话配置刷新令牌到期时间。

    声明

    Objective-C

    @property (nonatomic, readonly, nullable) NSString *refreshToken;

    Swift

    var refreshToken: String? { get }
  • 用户用于访问 App Services 的访问令牌。

    这是向 Atlas App Services(例如 Data API 或 GraphQL)发出 HTTP 请求时所必需的。应将其视为敏感数据。

    Realm 软件开发工具包(Realm SDK)会自动托管访问令牌,并在访问令牌过期时对其进行刷新。

    声明

    Objective-C

    @property (nonatomic, readonly, nullable) NSString *accessToken;

    Swift

    var accessToken: String? { get }
  • 用户的当前状态。

    声明

    Objective-C

    @property (nonatomic, readonly) RLMUserState state;

    Swift

    var state: RLMUserState { get }
  • 指示用户是否已登录。 如果访问令牌和刷新令牌不为空,则返回 true。

    声明

    Objective-C

    @property (nonatomic, readonly) BOOL isLoggedIn;

    Swift

    var isLoggedIn: Bool { get }

生命周期

会话

自定义数据

  • 用户的自定义数据。 这是在 Atlas App Services 应用程序中配置的。

    声明

    Objective-C

    @property (nonatomic, readonly) NS_REFINED_FOR_SWIFT NSDictionary *customData;
  • 用户的个人资料。

    声明

    Objective-C

    @property (nonatomic, readonly) RLMUserProfile *_Nonnull profile;

    Swift

    var profile: RLMUserProfile { get }
  • 刷新用户的自定义数据。 这实际上会刷新用户的身份验证会话。

    声明

    Objective-C

    - (void)refreshCustomDataWithCompletion:
        (nonnull RLMUserCustomDataBlock)completion;
  • 将当前经过身份验证的用户与新身份关联,其中该身份由指定为参数的档案定义。 仅当此RLMUser当前已通过创建它的客户端进行身份验证时,此操作才会成功。 成功后,将返回一个带有新链接凭证的新用户。

    声明

    Objective-C

    - (void)linkUserWithCredentials:(nonnull RLMCredentials *)credentials
                         completion:(nonnull RLMOptionalUserBlock)completion;

    参数

    credentials

    用于将用户与新身份关联的RLMCredentials

    completion

    链接完成时调用的完成处理程序。 如果操作成功,结果将包含一个新的RLMUser对象,表示当前登录的用户。

  • 删除用户

    这将注销并销毁与该用户相关的会话。 如果未找到用户或已删除用户,则完成区块将返回错误。

    声明

    Objective-C

    - (void)removeWithCompletion:(nonnull RLMUserOptionalErrorBlock)completion;

    Swift

    func remove() async throws

    参数

    completion

    完成时调用的回调

  • 从 Atlas App Services App 中永久删除该用户。

    用户状态将设置为Removed ,会话将被销毁。 如果删除请求失败,则不会更改本地身份验证状态。

    声明

    Objective-C

    - (void)deleteWithCompletion:(nonnull RLMUserOptionalErrorBlock)completion;

    Swift

    func delete() async throws

    参数

    completion

    完成时调用的回调

  • 注销当前用户

    如果用户是匿名用户,则用户状态将设置为Removed ;如果通过电子邮件/密码或第三方身份验证客户端进行身份验证,则状态将设置为LoggedOut 。如果注销请求失败,此方法仍将清除本地身份验证状态。

    声明

    Objective-C

    - (void)logOutWithCompletion:(nonnull RLMUserOptionalErrorBlock)completion;

    Swift

    func logOut() async throws

    参数

    completion

    完成时调用的回调

  • 用户 API 密钥身份验证提供商的客户端,可用于创建和修改用户 API 密钥。

    此客户端只能由经过身份验证的用户使用。

    声明

    Objective-C

    @property (nonatomic, readonly) RLMAPIKeyAuth *_Nonnull apiKeysAuth;

    Swift

    var apiKeysAuth: RLMAPIKeyAuth { get }
  • 用于与远程 MongoDB 实例交互的客户端

    声明

    Objective-C

    - (nonnull RLMMongoClient *)mongoClientWithServiceName:
        (nonnull NSString *)serviceName;

    参数

    serviceName

    MongoDB 服务的名称

  • 使用提供的名称和参数调用 Atlas App Services 函数。

    声明

    Objective-C

    - (void)callFunctionNamed:(nonnull NSString *)name
                    arguments:(nonnull NSArray<id<RLMBSON>> *)arguments
              completionBlock:(nonnull RLMCallFunctionCompletionBlock)completion;

    参数

    name

    要调用的 Atlas App Services 函数的名称。

    arguments

    要提供给函数的参数BSONArray

    completion

    函数调用完成时要调用的完成处理程序。 此处理程序在非主全局DispatchQueue上执行。