Skip to main content

IMOAuth Hooks

info

useAuthStateEffectを除く全てのhooksは引数にcontextを渡すことができます。
この引数は、Providerでcontextを設定した場合に利用される事を想定しています。

useAuthState

現在の認可の状態を返します。
状態が変更されるとIMOAtuhは再レンダーを発生させます。

tip

多くの場合、この状態によって描画するコンポーネントを制御することになるはずです。

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を返します。
アクセストークンが変更された場合再レンダーが発生します。

caution

このアクセストークンは、前回の認可または通信時に有効であったものです。
アクセストークンの有効期限次第ではすでに無効になっている可能性があることに注意してください。
有効なアクセストークンを完全に保証する手段はありませんが、getTokenAsyncrefreshによってアクセストークンの使用前に更新を行う事はできます。

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

Returns

StartAuthResult

NameTypeDescription
type'success', 'cancel', 'dismiss', 'locked', 'error', 'exception'
detailAuthSessionResultこれはtypeが'cancel', 'dismiss', 'locked', 'error'のいずれかの場合にのみ使用できます。これはexpoのAuthSessionResultそのままです。
exceptionDetailunknownこれはtypeが'exception'の場合にのみ使用できます。error instanceがそのまま格納されるためこの値が何であるかはランタイムでしか判断できません。
tip

認可の結果に合わせて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]);
*/
}
danger

非常にシンプルな糖衣構文であるため、この機能は将来的に廃止される可能性があります。