1.0.0-next • Published 5 years ago
@intra-mart/expo-bare-im-auth v1.0.0-next
expo bare workflowで使用できるWebViewベースのOAuthライブラリ
プラットフォーム
- ios
- android
使用例
@intra-mart/expo-bare-im-authから次のようにインポートして使用できます。
IMOAuthは認証が行われていない場合baseUrlに指定された
intra-mart Accel Platformの認可エンドポイントにアクセスします。
ユーザが認証を行うと自動的に内部コンテンツのレンダリングを行います。
アクセストークンが無効になった場合や予期しないエラーが発生した場合IMOAtuhは内部コンテンツのレンダリングを中止し、再度ユーザに認証を要求します。
import { IMOAuth } from '@intra-mart/expo-bare-im-auth';
<IMOAuth
baseUrl={'http://localhost:8080/imart'}
redirectUrl={'host://oauthredirect'}
clientId={'account-sample'}
clientSecret={['account']}
scopes={'sample'}
>
{/* 任意のコンテンツ */}
</IMOAuth>
Props
オプション | タイプ | 必須 | デフォルト |
---|---|---|---|
baseUrl | string | yes | |
redirectUrl | string | yes | |
clientId | string | yes | |
clientSecret | string | yes | |
scopes | string array | yes | |
context | context | no | |
storageKey | string | no | @example:iAPAuthKey |
remainingTimeToRunRefresh | number | no | 360000 |
OnError | function | no |
Hooks
3つのhooksを使用できます。
useToken
- 現在有効なアクセストークンを取得できます。
- このアクセストークンは、前回の認証または通信時に有効であったものです。
- アクセストークンの有効期限次第ではすでに無効になっている可能性があることに注意してください。
import { useToken } from '@intra-mart/expo-bare-im-auth';
const token = useToken();
useIMFetch
- Fetch APIのラッパーを返します。
- このhooksで取得したFetchはアクセストークンを暗黙的に埋め込んで通信を行います(あなたがアクセストークンを明示的にheadersに指定する必要はありません)
- またアクセストークンの認証の有効期限が切れている場合暗黙的にリフレッシュトークンでアクセストークンの更新を行います。
- アクセストークンの更新に成功した場合、headersのアクセストークンのみを変更して再度同様の通信を行います。
- このFetchの基本的な使い方はFetch APIと同様です。
- アクセストークン、リフレッシュトークンの両方が無効な場合エラーを投げて認証画面に遷移します。
import { useIMFetch } from '@intra-mart/expo-bare-im-auth';
const IMFetch = useIMFetch();
const response = await IMFetch('http://localhost:8080/imart/logic/api/sample/', {
method: 'GET',
headers: {}
});
useDestroy
- 現在IMOAuthが保持しているトークン情報を全て破棄してユーザを認証画面に戻します。
- トークン情報はストレージからも削除されます。
import { useDestroy } from '@intra-mart/expo-bare-im-auth';
useDestroy();
useAsyncToken
- 現在有効なアクセストークンを取得できます。
- useTokenとの違いはアクセストークンの有効期限が切れている場合にアクセストークンの更新を実行してからアクセストーンを返すということです。
- アクセストークン、リフレッシュトークンの両方が無効な場合エラーを投げて認証画面に遷移します。
- これは非同期です。
import { useAsyncToken } from '@intra-mart/expo-bare-im-auth';
const asyncToken = useAsyncToken();
(async() => {
const token = await asyncToken;
});
ライセンス
MIT
1.0.0-next
5 years ago