IMOAuth Hooks
useAuthStateEffectを除く全てのhooksは引数にcontextを渡すことができます。
この引数は、Providerでcontextを設定した場合に利用される事を想定しています。
useAuthState
現在の認可の状態を返します。
状態が変更されるとIMOAtuhは再レンダーを発生させます。
多くの場合、この状態によって描画するコンポーネントを制御することになるはずです。
Returns
AuthState
'initializing' | 'unauthorized' | 'authorized';
Example Usage
import { useAuthState } from "@intra-mart/smartlime";
const App = () => {
// 'initializing' or 'unauthorized' or 'authorized'
const state = useAuthState();
}
useIMOAuth
認可状態を操作するためのいくつかのFunctionを返します。
Returns
getToken
- 現在のアクセストークンを返します。
- useIMTokenとの違いはトップレベル以外でも呼び出せる事と再レンダーが発生しない点です。
- Returns
string | null
getTokenAsync
- 更新が必要な場合、更新を実行してから最新のアクセストークンを返します。
- 更新の必要性はremainingTimeToRunRefreshで設定された時間が経過したかどうかによってのみ判断されます。
- 更新に成功するとSecureStoreに保存されたアクセストークンも同時に更新されます。
- Returns
Promise<string | null>
refresh
- アクセストークンの更新を実行します。
- 更新に成功するとSecureStoreに保存されたアクセストークンも同時に更新されます。
- Returns
Promise<void>
destroy
- 現在保持しているアクセストークンを破棄します。
- この時渡されているstorageKeyの値を元にSecureStoreからもアクセストークンを削除します。
- Returns
Promise<void>
Example Usage
import { useIMOAuth } from "@intra-mart/smartlime";
const App = () => {
const { getToken, getTokenAsync, refresh, destroy } = useIMOAuth();
}
useIMToken
現在のアクセストークンを返します。
認可が完了していない場合やアクセストークンが何らかの理由で破棄された場合等にはnullを返します。
アクセストークンが変更された場合再レンダーが発生します。
このアクセストークンは、前回の認可または通信時に有効であったものです。
アクセストークンの有効期限次第ではすでに無効になっている可能性があることに注意してください。
有効なアクセストークンを完全に保証する手段はありませんが、getTokenAsyncやrefreshによってアクセストークンの使用前に更新を行う事はできます。
Returns
string | null;
Example Usage
import { useIMToken } from "@intra-mart/smartlime";
const App = () => {
// token string or null
const token = useIMToken();
}
useStartAuth
認可を開始するFunctionを返します。
startAuthを呼び出すとIMOAuthは認可用のモーダルを表示してユーザに認可を求めます。
その後startAuthは非同期に認可の結果を返します。
認可が完了するとアクセストークンはSecureStoreに保存されます。
Returns
- StartAuth(Async Function)
StartAuth
Returns
Promise
<StartAuthResult>
StartAuthResult
Name | Type | Description |
---|---|---|
type | 'success', 'cancel', 'dismiss', 'locked', 'error', 'exception' | |
detail | AuthSessionResult | これはtypeが'cancel', 'dismiss', 'locked', 'error' のいずれかの場合にのみ使用できます。これはexpoのAuthSessionResultそのままです。 |
exceptionDetail | unknown | これはtypeが'exception'の場合にのみ使用できます。error instanceがそのまま格納されるためこの値が何であるかはランタイムでしか判断できません。 |
認可の結果に合わせてuseAuthStateの返す値が変更されます。
この二つを合わせて認可の状態に合わせたコンポーネントの制御ができます。
DefaultAuthScreenは良い例です。
Example Usage
import { useStartAuth } from "@intra-mart/smartlime";
const App = () => {
const startAuth = useStartAuth();
const onPress = () => {
/*
result.type is 'success' or 'cancel' or 'dismiss' or 'locked' or 'error' or 'exception'
*/
const result = await startAuth();
};
useAuthStateEffect
認可の状態が変更されるとAuthStateを引数に渡してcallbackを呼び出します。
このhooksは、depsにuseAuthStateの戻り値を設定したuseEffectの糖衣構文です。
Arguments
- callBack: (
state
: AuthState):ReturnType<React.EffectCallback>
Example Usage
import { useAuthStateEffect } from "@intra-mart/smartlime";
const App = () => {
useAuthStateEffect((state) => {
// state is 'initializing' or 'unauthorized' or 'authorized'
});
/*
// useAuthStateEffect is equivalent to this.
const state = useAuthState();
useEffect(() => {
// your code
}, [state]);
*/
}
非常にシンプルな糖衣構文であるため、この機能は将来的に廃止される可能性があります。