> ## Documentation Index
> Fetch the complete documentation index at: https://docs-dev-actions-triggers-prototype.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# APIを使ったモバイルアプリケーション

> モバイルアプリケーションがAPIと通信するアーキテクチャシナリオについてご説明します。

この例では、ExampleCoという架空の会社のためにタイムシートAPIを作成します。このAPIにより、従業員・請負業者のタイムシートエントリーが管理できるようになります。

また、このAPIを使って、タイムシートエントリーを表示・記録してそれを一元化されたタイムシートデータベースに送るモバイルアプリケーションもビルドします。

<Info>
  ### TL;DR

  * Auth0はAPIエンドポイントへのアクセスを保護する手段として、API認証および認可を提供しています（[「API認証と認可」](/docs/ja-jp/get-started/architecture-scenarios/mobile-api/part-1#api-authentication-and-authorization)を参照）
  * モバイルアプリユーザーの認可およびAPIのアクセス付与に、Auth0は[Proof Key for Code Exchange（PKCE）を使った認可コードフロー](/docs/ja-jp/flows/concepts/auth-code-pkce)をサポートしています（[「Proof Key for Code Exchange」](/docs/ja-jp/get-started/architecture-scenarios/mobile-api/part-1#proof-key-for-code-exchange-pkce-)を参照）
  * モバイルアプリとAPIはAuth0 Dashboardで構成する必要があります（[「Auth0の構成」](/docs/ja-jp/get-started/architecture-scenarios/mobile-api/part-2)を参照）
  * ユーザーの権限は、認可拡張機能を使用して強制することができます（[「認可拡張機能を設定する」](/docs/ja-jp/get-started/architecture-scenarios/mobile-api/part-2#configure-the-authorization-extension)を参照）
  * APIは、APIへの呼び出し時にHTTP認可ヘッダーに有効な<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-0" href="/docs/ja-jp/glossary?term=access-token" tip="アクセストークン: APIへのアクセスに使用される、不透明な文字列またはJWT形式の認可資格情報。" cta="用語集の表示">アクセストークン</Tooltip>が渡されることを確認することで保護されます（[「APIを実装する」](/docs/ja-jp/get-started/architecture-scenarios/mobile-api/part-3#secure-the-endpoints)を参照）
  * Auth0.Android SDKを使用して、モバイルアプリユーザーを認可し、有効なアクセストークンを取得し、APIを呼び出すことができます（[「ユーザーを認可する」](/docs/ja-jp/get-started/architecture-scenarios/mobile-api/part-3#authorize-the-user)を参照）
  * モバイルアプリは、IDトークンをデコードしてユーザーのプロファイル情報を取得できます（[「ユーザープロファイルの取得」](/docs/ja-jp/get-started/architecture-scenarios/mobile-api/part-3#get-the-user-profile)を参照）
  * ユーザーに付与されたスコープに基づいて、UI要素を条件付きで表示できます（[「スコープに基づいた条件付きUIの表示」](/docs/ja-jp/get-started/architecture-scenarios/mobile-api/part-3#display-ui-elements-conditionally-based-on-scope)
  * モバイルアプリは、APIへの呼び出し時にHTTP認可ヘッダーにアクセストークンを提供します（[「APIを呼び出す」](/docs/ja-jp/get-started/architecture-scenarios/mobile-api/part-3#call-the-api)参照）
  * モバイルアプリのユーザーアクセストークンは、セッション中にログインしなおす必要がないように更新できます（[「トークンを更新する」](/docs/ja-jp/get-started/architecture-scenarios/mobile-api/part-3#renew-the-token)を参照）
</Info>

## 前提条件

ExampleCoは、コンサルティングを行うスタートアップ企業です。現在、従業員は約100名で、いくつかの業務を社外の請負業者に外注しています。従業員と請負業者は、毎週タイムシートに記入する必要があります。

そこで同社は、[通常のWebアプリ向けシングルサインオン](/docs/ja-jp/get-started/architecture-scenarios/sso-for-regular-web-apps)で紹介しているシナリオの通り、タイムシートのアプリケーションを構築しました。社内にいる従業員は、このWebアプリを使ってタイムシートに入力していますが、会社は、会社の外にいる従業員や請負業者にはモバイルアプリケーションを使ってもらいたいと考えています。アプリは、APIを使って、タイムシートエントリーのログを取り、そのデータを一元化されたタイムシートデータベースに送ります。また、管理職によるタイムシートエントリーの承認も可能になります。

### 目標と要件

ExampleCoは、フレキシブルなソリューションを構築したいと考えています。複数の従業員や請負業者が同時にタイムシートエントリーのログを取る可能性があるだけでなく、外部システムからタイムシートエントリーをアップロードする一括処理も実行できなければなりません。

そのため、会社は、単一のタイムシートAPIを開発して、このモバイルアプリだけでなく、すべてのアプリで時間を記録できるようにしようと決断しました。会社は、このような用途に対応できるフレキシブルなセキュリティアーキテクチャを実装したいと考えています。アプリケーションのコードやビジネスロジックの大部分を、他のアプリケーションと共有できるようにしたいのです。

タイムシートAPIには、認可されたユーザーとアプリケーションだけがアクセスできるようにする必要があります。

## もっと詳しく

* [ソリューションの概要（モバイルアプリ + API）](/docs/ja-jp/get-started/architecture-scenarios/mobile-api/part-1)
* [Auth0の構成（モバイルアプリ + API）](/docs/ja-jp/get-started/architecture-scenarios/mobile-api/part-2)
* [APIとモバイルの構成（モバイルアプリ + API）](/docs/ja-jp/get-started/architecture-scenarios/mobile-api/part-3)
* [Node.jsでのAPIの実装（モバイルアプリ + API）](/docs/ja-jp/get-started/architecture-scenarios/mobile-api/api-implementation-nodejs)
* [Android用モバイルアプリの実装方法（モバイルアプリとAPI）](/docs/ja-jp/get-started/architecture-scenarios/mobile-api/mobile-implementation-android)
* [結論（モバイルアプリ + API）](/docs/ja-jp/get-started/architecture-scenarios/mobile-api/part-4)
