auth0-android について
Auth0 Android SDKを使い、KotlinおよびJavaのAndroidアプリに認証を組み込むためのスキルです。ログイン、ログアウト、資格情報管理に加え、生体認証、パスワードレス認証、MFAの実装を扱います。
主な機能
- 01Auth0 Android SDKの設定
- 02ブラウザ経由のログインとログアウト
- 03資格情報の安全な保存と取得
- 04生体認証の追加
- 05パスワードレス認証とMFAの統合
活用シーン
- 01AndroidアプリへのAuth0ログイン追加
- 02ログイントークンの安全な保存
- 03生体認証の有効化
- 04パスワードレス認証やMFAへの対応
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ auth0/ agent-skills --skill auth0-androidインストール後、Claude Code で/auth0-androidを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/api.mdintegration.mdsetup.mdtests/evals.jsongraders.jsonprompt.md詳細
Auth0 Android Integration
com.auth0.android:auth0 を使用して Android アプリケーションに認証を追加します。
エージェントへの指示: SDK のセットアップ手順を案内する前に、次のコマンドを実行して最新のリリースバージョンを取得してください。
gh api repos/auth0/Auth0.Android/releases/latest --jq '.tag_name'ハードコードされたバージョンではなく、取得したバージョンをすべての
implementation依存関係の行で使用してください。コマンドが失敗した場合は、https://github.com/auth0/Auth0.Android/releases を確認してください。
前提条件
- Android API 21 以上
- Kotlin または Java のプロジェクト
- Native アプリケーションを設定済みの Auth0 アカウント
- Auth0 をまだ設定していない場合は、auth0-quickstart を参照してください
使用しないケース
- React Native アプリ: auth0-react-native を使用してください
- Flutter アプリ:ネイティブの Flutter Auth0 SDK を使用してください
- Web SPA(React、Angular、Vue): auth0-react、auth0-angular、または auth0-vue を使用してください
- Node.js/Express サーバー: auth0-express を使用してください
- iOS/macOS アプリ: auth0-swift を使用してください
クイックスタートのワークフロー
-
SDK をインストールする:
build.gradleに Auth0 Android SDK の依存関係を追加します。implementation 'com.auth0.android:auth0:{LATEST_VERSION}' -
Auth0 を設定する:
エージェントへの指示: ユーザープロンプトに Auth0 の Client ID と Domain の両方がすでに含まれているか確認してください。
- 両方が指定されている場合は、その値を使ってセットアップガイドの手動セットアップに直接進みます。
- どちらかが指定されていない場合は、コードやファイルを書く前に、必ずユーザーに確認してください。
- 質問:「このプロジェクトで Auth0 をどのように設定しますか?」
- 選択肢:「自動セットアップ(推奨)— Auth0 CLI がアプリを作成し、認証情報を strings.xml に書き込みます」/「手動セットアップ — Client ID と Domain を指定します」
次に、選択された方法に従ってセットアップガイドを参照してください。 Auth0 の認証情報が確認されるまで、手順 3 に進まないでください。
注: ネイティブ Android アプリでは、Domain と Client ID は公開設定情報であり、秘密情報ではありません。クライアントシークレットは使用しません。値は会話の出力に表示せず、
strings.xmlに直接書き込んでください。 -
初期化する:Auth0 アカウントのインスタンスを作成します。
import com.auth0.android.Auth0 val account = Auth0.getInstance(context)重要:
Auth0.getInstance(context)はstrings.xmlからcom_auth0_client_idとcom_auth0_domainを自動的に読み込みます。clientIdやdomainを引数として渡すこと(例:Auth0.getInstance(clientId, domain))は絶対にしないでください。認証情報がソースにハードコードされてしまいます。 -
認証 UI を追加する:Web Auth を使ってログインとログアウトを実装します。
エージェントへの指示: 新しい UI 要素を追加する前に、プロジェクト内でログイン、ログアウト、サインイン、サインアウトボタンの既存のクリックハンドラー(例:
loginButton、signInButton、logoutButton、signOutButton、または認証関連の名前が付いたsetOnClickListener)を検索してください。既存のハンドラーが見つかった場合は、既存の UI を変更せず、そこに Auth0 のコードを組み込んでください。新しいボタンを作成するのは、既存のハンドラーが見つからない場合に限ります。ログイン:
import com.auth0.android.Auth0 import com.auth0.android.authentication.AuthenticationAPIClient import com.auth0.android.authentication.storage.SecureCredentialsManager import com.auth0.android.authentication.storage.SharedPreferencesStorage import com.auth0.android.callback.Callback import com.auth0.android.authentication.AuthenticationException import com.auth0.android.provider.WebAuthProvider import com.auth0.android.result.Credentials val account = Auth0.getInstance(context) val authentication = AuthenticationAPIClient(account) val storage = SharedPreferencesStorage(context) val credentialsManager = SecureCredentialsManager(context, authentication, storage) WebAuthProvider.login(account) .withScheme(getString(R.string.com_auth0_scheme)) .withScope("openid profile email offline_access") .start(this, object : Callback<Credentials, AuthenticationException> { override fun onSuccess(result: Credentials) { // User authenticated val idToken = result.idToken val accessToken = result.accessToken // Store credentials securely credentialsManager.saveCredentials(result) } override fun onFailure(error: AuthenticationException) { // Handle authentication failure Log.e("Auth0", "Authentication failed", error) } })ログアウト:
WebAuthProvider.logout(account) .withScheme(getString(R.string.com_auth0_scheme)) .start(this, object : Callback<Void?, AuthenticationException> { override fun onSuccess(result: Void) { // User logged out } override fun onFailure(error: AuthenticationException) { Log.e("Auth0", "Logout failed", error) } }) -
ビルドして検証する:
エージェントへの指示: 統合が完了したら、プロジェクトをビルドして正常にコンパイルできることを確認してください。
./gradlew assembleDebugビルドに失敗した場合は、エラー出力を分析して問題を修正してください。統合時によくあるビルドエラーは次のとおりです。
- 参照が未解決: import 文が不足しています。必要な
import com.auth0.android.*の import を追加してください。 - シンボル
R.string.com_auth0_schemeを解決できない:strings.xmlが更新されていません。com_auth0_scheme、com_auth0_client_id、com_auth0_domainの各エントリーが存在することを確認してください。 - コールバックの型が一致しない: コールバックの型パラメーターが一致していません。ログインには
Callback<Credentials, AuthenticationException>、ログアウトにはCallback<Void?, AuthenticationException>を使用してください。 lifecycleScopeが未解決: 依存関係が不足しています。implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.+'を追加するか、コルーチンスコープの外にコードを移動してください。- minSdk が低すぎる: SDK には API 21 以降が必要です。
minSdkVersionを 21 以上に更新してください。 - Java バージョンの不一致: SDK には Java 8 が必要です。
JavaVersion.VERSION_1_8を指定したcompileOptionsを追加してください。
修正するたびにビルドを再実行してください。ビルド修正の反復回数を記録してください。
失敗時の確認: 5~6 回修正を試みてもビルドに失敗する場合は、作業を停止してユーザーに確認してください。
- 質問:「何度か修正を試みましたが、ビルドはまだ失敗しています。どのように進めますか?」
- 選択肢:「エージェントに引き続き反復して修正させる」/「手動で修正します。エラーを表示してください」/「ビルド検証をスキップして続行する」
エラーが続く場合は、5~6 回反復するごとにこの確認を繰り返してください。ユーザーの明示的な同意なしに、プロジェクトをコンパイルできない状態のままにしないでください。
コールバック URL は、Auth0 アプリケーションの設定と一致している必要があります:
{SCHEME}://{YOUR_AUTH0_DOMAIN}/android/{YOUR_APP_PACKAGE_NAME}/callback - 参照が未解決: import 文が不足しています。必要な
詳細なドキュメント
- セットアップガイド — SDK のインストール、Auth0 アプリケーションの設定、コールバック URL のセットアップ、Android App Links、カスタムスキーム、ProGuard/R8
- 統合パターン — Web Auth のログイン/ログアウト、認証情報の保存、生体認証、データベースログイン、パスワードレス認証、MFA の処理、カスタムタブ、エラー処理
- テストとリファレンス — テストチェックリスト、よくある問題、セキュリティに関する考慮事項、API リファレンス
よくある間違い
| 間違い | 修正方法 |
|---|---|
| Auth0 Dashboard でアプリの種類が Native に設定されていない | Auth0 テナントで Native アプリケーションの種類を作成します。Android SDK には Native アプリの設定が必要です。Machine-to-Machine やその他の種類では使用できません。 |
| Allowed Callback URLs にコールバック URL がない | {SCHEME}://{YOUR_AUTH0_DOMAIN}/android/{YOUR_APP_PACKAGE_NAME}/callback を Auth0 アプリケーションの Allowed Callback URLs 設定に追加します。ここで {SCHEME} は strings.xml の com_auth0_scheme と一致させます(デフォルトは demo です)。 |
<uses-permission android:name="android.permission.INTERNET" /> がない | AndroidManifest.xml に INTERNET 権限を追加します。認証には SDK のネットワークアクセスが必要です。 |
| カスタムスキームが小文字でない | Android ではスキーム名を小文字にする必要があります。https(推奨)または myapp://callback のような小文字のカスタムスキームを使用します。 |
直接認証を呼び出す際に .validateClaims() を忘れる | AuthenticationAPIClient を直接使用する場合(データベース、パスワードレス、API ログイン)は、必ず .validateClaims() を呼び出します。Web Auth では自動的に検証されます。 |
| 暗号化せずに SharedPreferences にトークンを保存する | SecureCredentialsManager を使って認証情報を保存します。トークンを手動で平文のまま保存しないでください。マネージャーは保存中のトークンを暗号化します。 |
| マニフェストプレースホルダーがない | build.gradle の defaultConfig ブロックに manifestPlaceholders = [auth0Domain: "@string/com_auth0_domain", auth0Scheme: "@string/com_auth0_scheme"] を追加します。 |
関連スキル
- auth0-quickstart — Auth0 アカウントとアプリケーションをセットアップする
- auth0-mfa — 多要素認証を設定する
- auth0-swift — iOS/macOS 認証
- auth0-cli — ターミナルから Auth0 リソースを管理する
クイックリファレンス
主要クラス
| クラス | 用途 |
|---|---|
Auth0 | SDK のエントリーポイント。アプリの認証情報を保持します |
WebAuthProvider | ブラウザー経由の OAuth 2.0 ログイン/ログアウト |
AuthenticationAPIClient | 直接 API を呼び出します(データベースログイン、パスワードレス、MFA) |
SecureCredentialsManager | 認証情報を安全に保存、取得します |
Credentials | ユーザートークンと有効期限 |