AppProvider (@realm/react)
在此页面上
- Props 对象
- 配置 AppProvider
- 与 AppProvider 一起使用的钩子
- useAuth()
- 结果
- logIn(credentials)
- logInWithAnonymous()
- logInWithApiKey(key)
- logInWithEmailPassword(credentials)
- logInWithJWT(credentials)
- logInWithGoogle(credentials)
- logInWithApple(idToken)
- logInWithFacebook(accessToken)
- logInWithFunction(payload)
- logOut()
- useEmailPasswordAuth()
- logIn(credentials)
- logOut()
- 注册(args)
- Confirm(args)
- resendConfirmationEmail(args)
- retryCustomConfirmation(args)
- sendResetPasswordEmail(args)
- resetPassword(args)
- callResetPasswordFunction(args, restArgs)
- useApp()
AppProvider(props, context?): null | ReactElement<any, any>
嵌套在 AppProvider
中的组件可以访问您的 App Services App 并使用AppProvider
钩子。
Props 对象
AppConfiguration的所有属性都可以作为属性传递给AppProvider
。
配置 AppProvider
要设置 App 客户端,请将 App ID 字符串传递给AppProvider
的id
属性。 使用AppProvider
封装需要访问应用的所有组件。
import React from 'react'; import {AppProvider} from '@realm/react'; function AppWrapper() { return ( <View> <AppProvider id={APP_ID}> <MyApp /> </AppProvider> </View> ); }
您可以创建多个应用客户端实例以连接多个应用。 股票相同 App ID的所有 App客户端实例使用相同的根本的连接。
重要
初始化应用后更改应用配置
在版本realm@12.6.0
中进行了更改:不缓存baseUrl
初始化 App 客户端时,会在内部缓存配置。 尝试在同一进程中“关闭”并重新打开配置已更改的应用无效。 客户端继续使用缓存的配置。
从React Native SDK版本12.6.0开始,不会缓存AppConfiguration
中的baseUrl
。 这意味着您可以更改baseUrl
,应用客户端将使用更新后的配置。 在早期 SDK 版本中,对缓存的应用配置中的baseUrl
进行更改无效。
与 AppProvider 一起使用的钩子
useAuth()
useAuth(): UseAuth
useAuth
为每个 App Services 身份验证提供商提供了一种身份验证方法。
结果
result: AuthResult
身份验证钩子操作的结果。 例如, result.operation
将为您提供当前操作的名称。
枚举值
state
。可以是“未启动”、“待处理”、“成功”、“错误”。operation
。有关所有操作名称的列表,请参阅API文档。pending
。可以是true
或false
。success
。可以是true
或false
。error
。基于错误的对象或未定义。
logIn(credentials)
logIn(credentials: Realm.Credentials): void
参数
credentials
。任何受支持的 Realm 身份验证提供的 Realm 档案。
例子
使用 Realm 支持的任何身份验证机制让用户登录。 如果在用户登录时调用,则当前用户会切换到新用户。 通常,最好使用更具体的登录方法。
const {logIn, result} = useAuth(); useEffect(() => logIn(Realm.Credentials.anonymous()), []); if(result.pending) { return (<LoadingSpinner/>) } if(result.error) { return (<ErrorComponent/>) } if(result.success) { return (<SuccessComponent/>) } //...
logInWithAnonymous()
logInWithAnonymous(): void
例子
使用匿名身份验证提供者登录。
const {logInWithAnonymous, result} = useAuth(); const performLogin = () => { logInWithAnonymous(); };
logInWithApiKey(key)
logInWithApiKey(key: string): void
参数
key
。链接到 App Services 用户的字符串。
例子
使用 API 密钥登录。
const {logInWithApiKey, result} = useAuth(); const performLogin = () => { const key = getApiKey(); // user defined function logInWithApiKey(key); };
logInWithEmailPassword(credentials)
logInWithEmailPassword(credentials: { email: string; password: string; }): void
参数
credentials
。具有email
和password
字段的对象。
例子
使用电子邮件/密码登录。
const {logInWithEmailPassword, result} = useAuth(); const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); const performLogin = () => { logInWithEmailPassword({email, password}); };
logInWithJWT(credentials)
logInWithJWT(token: string): void
参数
credentials
。用户 JSON web token 的字符串表示形式。
例子
使用 JSON web token (JWT) 登录。
const {logInWithJWT, result} = useAuth(); const performLogin = () => { const token = authorizeWithCustomerProvider(); // user defined function logInWithJWT(token); };
logInWithGoogle(credentials)
logInWithGoogle(credentials: { idToken: string; } | { authCode: string; }): void;
参数
credentials
。具有idToken
或authCode
字段的对象,该字段应包含从 Google Identity Services 获取的字符串令牌。
例子
使用 Google 登录。
const {logInWithGoogle, result} = useAuth(); const performLogin = () => { const token = getGoogleToken(); // user defined function logInWithGoogle({idToken: token}); };
logInWithApple(idToken)
logInWithApple(idToken: string): void;
参数
idToken
。从 Apple SDK 获取的字符串。
例子
使用 Apple 登录。
const {logInWithApple, result} = useAuth(); const performLogin = () => { const token = getAppleToken(); // user defined function logInWithApple(token); };
logInWithFacebook(accessToken)
logInWithFacebook(accessToken: string): void;
参数
accessToken
。从 Facebook SDK 获取的字符串。
例子
使用 Facebook 登录。
const {logInWithFacebook, result} = useAuth(); const performLogin = () => { const token = getFacebookToken(); // user defined function logInWithFacebook(token); };
logInWithFunction(payload)
logInWithFunction<PayloadType extends Record<string, unknown>>(payload: PayloadType): void;
参数
payload
。一个对象,其中包含要传递给处理登录请求的 App Services 函数的用户信息。
例子
使用自定义函数登录。
const {logInWithFunction, result} = useAuth(); const performLogin = () => { const customPayload = getAuthParams(); // user defined arguments logInWithFunction(customPayload); };
logOut()
logOut(): void;
例子
注销当前用户。
const {logOut, result} = useEmailPasswordAuth(); const performLogout = () => { logOut(); }
useEmailPasswordAuth()
result: AuthResult
身份验证钩子操作的结果。 例如, result.operation
将为您提供当前操作的名称。
枚举值
state
。可以是“未启动”、“待处理”、“成功”、“错误”。operation
。有关所有操作名称的列表,请参阅API文档。pending
。可以是true
或false
。success
。可以是true
或false
。error
。基于错误的对象或未定义。
logIn(credentials)
logIn(credentials: { email: string; password: string }): void;
参数
credentials
。包含email
和password
属性的对象。
例子
使用电子邮件和密码登录用户。 您也可以调用logIn(Realm.Credentials.emailPassword(email, password))
。 返回已登录用户的Realm.User
实例。
const {logIn, result} = useEmailPasswordAuth(); const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); const performLogin = () => { logIn({email, password}); }; if(result.pending) { return (<LoadingSpinner/>) } if(result.error) { return (<ErrorComponent/>) } if(result.success) { return (<SuccessComponent/>) } //...
logOut()
logOut(): void;
例子
注销当前用户。
const {logOut, result} = useEmailPasswordAuth(); const performLogout = () => { logOut(); }
注册(args)
register(args: { email: string; password: string }): void;
参数
args
。包含email
和password
属性的对象。
例子
注册新用户。 需要用户电子邮件和密码。
const {register, result} = useEmailPasswordAuth(); const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); const performRegister = () => { register({email, password}); };
Confirm(args)
confirm(args: { token: string; tokenId: string }): void;
参数
args
。包含token
和tokenId
属性的对象。
例子
确认用户帐户。 需要token
和tokenId
。
const {confirm, result} = useEmailPasswordAuth(); const performConfirmation = () => { confirm({token, tokenId}); };
resendConfirmationEmail(args)
resendConfirmationEmail(args: { email: string }): void;
参数
args
。包含email
属性的对象。
例子
重新发送确认电子邮件。
const {resendConfirmationEmail, result} = useEmailPasswordAuth(); const [email, setEmail] = useState(''); const performResendConfirmationEmail = () => { resendConfirmationEmail({email}); };
retryCustomConfirmation(args)
retryCustomConfirmation(args: { email: string }): void;
参数
args
。包含email
属性的对象。
例子
使用自定义函数重试确认。
const {retryCustomConfirmation, result} = useEmailPasswordAuth(); const [email, setEmail] = useState(''); const performRetryCustomConfirmation = () => { retryCustomConfirmation({email}); };
sendResetPasswordEmail(args)
sendResetPasswordEmail(args: { email: string }): void;
参数
args
。包含email
属性的对象。
例子
发送密码重置电子邮件。
const {sendResetPasswordEmail, result} = useEmailPasswordAuth(); const [email, setEmail] = useState(''); const performSendResetPasswordEmail = () => { sendResetPasswordEmail({email}); };
resetPassword(args)
resetPassword(args: { token: string; tokenId: string; password: string }): void;
参数
args
。包含token
、tokenId
和password
属性的对象。
例子
重置用户密码。
const {resetPassword, result} = useEmailPasswordAuth(); const [password, setPassword] = useState(''); const performResetPassword = () => { resetPassword({token, tokenId, password}); };
callResetPasswordFunction(args, restArgs)
callResetPasswordFunction<Args extends unknown[] = []>( args: { email: string; password: string; }, ...restArgs: Args ): void;
参数
args
。包含email
和password
属性的对象。restArgs
。您需要传递给自定义重置密码函数的其他参数。
例子
调用 App Services 后端密码重置函数。 可根据需要向函数传递参数。
const {callResetPasswordFunction, result} = useEmailPasswordAuth(); const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); const performResetPassword = () => { callResetPasswordFunction({email, password}, "extraArg1", "extraArg2"); };
useApp()
useApp<FunctionsFactoryType, CustomDataType>(): Realm.App<FunctionsFactoryType, CustomDataType>
例子
useApp()
钩子提供对Realm.App实例的访问权限。
import React from 'react'; import {useApp} from '@realm/react';
function MyApp() { const app = useApp(); // Proceed to app logic... }
返回:
Realm.App
AppProvider
创建的当前Realm.App
的实例。