メインコンテンツへスキップ

はじめに

1

新しい Android プロジェクトを作成

このクイックスタート用に新しい Android プロジェクトを作成します。Android Studio で:
  1. FileNewNew Project
  2. Phone and TabletEmpty Activity テンプレートを選択します
  3. プロジェクトを次のように設定します:
    • Name: Auth0-Android-Sample
    • Package name: com.auth0.samples.android
    • Language: Kotlin
    • Minimum SDK: API 24 (Android 7.0)
    • Build configuration language: Kotlin DSL
  4. Finish をクリックします
これにより、Kotlin と Gradle Kotlin DSL を使用し、最新の Android 開発のベストプラクティスに従ったモダンな Android アプリが作成されます。
2

Gradle を使って Auth0 ソフトウェア開発キット (SDK) を追加する

Gradle を使って、Auth0 Android ソフトウェア開発キット (SDK) をプロジェクトに追加します。アプリレベルの build.gradle.kts ファイルを更新します:
app/build.gradle.kts
AndroidManifest.xml にインターネット権限を追加する:
app/src/main/AndroidManifest.xml
Auth0 ソフトウェア開発キット (SDK) は依存関係の解決を自動的に行い、安全なトークン保存機能を提供します。
3

Auth0 アプリケーションのセットアップ

次に、Auth0 テナントに新しいアプリケーションを作成し、その設定を Android プロジェクトに追加します。まず、プレースホルダー値を使って app/src/main/res/values/strings.xml ファイルを用意します。
app/src/main/res/values/strings.xml
  1. Auth0 Dashboard にアクセスします
  2. Applications > Applications > Create Application をクリックします
  3. ポップアップでアプリ名を入力し、アプリ タイプとして Native を選択して Create をクリックします
  4. Application Details ページの Settings タブに切り替えます
  5. strings.xml ファイル内の {yourDomain}YOUR_AUTH0_CLIENT_ID を、ダッシュボードの DomainClient ID の値に置き換えます
最後に、Application Details ページの Settings タブで、次の URL を設定します。Allowed Callback URLs:
許可されたログアウトURL:
{yourDomain} を実際の Auth0 ドメイン(例: dev-abc123.us.auth0.com)に置き換えてください。
許可されたコールバックURL は、認証後にユーザーを安全にアプリケーションへ戻すための重要なセキュリティ対策です。一致するURLがない場合、ログイン処理は失敗し、ユーザーはアプリにアクセスできず Auth0 のエラーページでブロックされます。許可されたログアウトURL は、サインアウト時にシームレスなユーザー体験を提供するために不可欠です。一致するURLがない場合、ユーザーはログアウト後にアプリケーションへリダイレクトされず、一般的な Auth0 ページに留まることになります。URLスキームには、コールバックが特定のアプリにルーティングされるように、パッケージ名(com.auth0.samples.android)が含まれます。
重要: コールバックURL内のパッケージ名が、build.gradle.ktsapplicationId と一致していることを確認してください。認証が失敗する場合は、これらの値が同一であることを確認してください。
4

Auth0 ソフトウェア開発キット (SDK) の初期化

Auth0 と通信するために、Activity で Auth0 インスタンスを作成してください。MainActivity.kt で:
MainActivity.kt
Auth0 インスタンスは、前の手順で設定した strings.xml ファイル内のクライアントIDとドメインを使って初期化されます。このインスタンスは、すべての認証処理に使用されます。
5

ログイン/ログアウトを実装する

ログインを実装する: WebAuthProvider を使用して Universal Login ページを起動します。次のメソッドを MainActivity に追加します:
MainActivity.kt
ログアウトを実装する: WebAuthProvider を使用してユーザーのセッションをクリアします。
MainActivity.kt
login()logout() メソッドは、ユーザーが UI のそれぞれのボタンをタップしたときに呼び出す必要があります。コードでは、WebAuthProvider が Chrome Custom Tabs を起動し、認証フローを処理するために必要となるコンテキスト引数として this(Activity を参照)を使用しています。
6

アプリを実行する

Android アプリケーションをビルドして実行します。Android Studio の場合:
想定されるフロー:
  1. アプリが起動し、「Log In」ボタンとシールドアイコンが表示される
  2. 「Log In」をタップ → Chrome Custom Tab が開く → ログインを完了する
  3. 自動的にアプリに戻る
  4. 成功!!
複数のブラウザがインストールされている場合、Android はブラウザ選択ダイアログを表示します。Chrome Custom Tabs を使用すると、Auth0 認証において最適なユーザーエクスペリエンスを提供できます。
チェックポイントここまでの手順で、Android デバイスまたはエミュレーター上で Auth0 のログインエクスペリエンスが問題なく動作しているはずです。アプリでは安全な認証のために Chrome Custom Tabs を使用し、認証情報を自動的に保存します。

トラブルシューティング & 高度な設定

Chrome Custom Tab がアプリにリダイレクトされない

解決策:
  1. Auth0 Dashboard で Allowed Callback URLsapplicationId と完全に一致していることを確認してください
  2. build.gradle.kts 内のマニフェストプレースホルダーが正しいことを確認してください
  3. HTTPS とカスタムスキームの両方の URL が構成されていることを確認してください
  4. クリーン & 再ビルド: BuildClean ProjectRebuild Project

アプリがクラッシュする: ‘Auth0 domain not found’

対処方法:
  1. com_auth0_domaincom_auth0_client_id の値が正しいことを確認してください
  2. ドメイン形式にタイプミスがないことを確認してください(https:// を含めないでください)

依存関係に関連するビルドエラー

対処方法:
  1. build.gradle(プロジェクトレベル)で Android Gradle Plugin を最新バージョンに更新してください
  2. プロジェクトを同期してください: FileSync Project with Gradle Files
  3. クリーンビルドを実行してください: ./gradlew clean build

ユーザーによって認証がキャンセルされる

エラーコールバック内で適切に処理してください:

互換性のあるブラウザがないというエラー

  • デバイス/エミュレータに Chrome などの最新のブラウザをインストールしてください
  • より良いユーザー体験のために Chrome Custom Tabs を有効にしてください
  • Chrome がインストールされた実機デバイスでテストしてください

認証情報のセキュリティ強化

認証情報へのアクセスに生体認証を次のように実装します:
AuthenticationManager.kt

カスタムスコープとオーディエンス

API 用に特定のスコープとオーディエンスを要求します:
AuthenticationManager.kt

ネットワーク構成

ネットワークセキュリティと証明書ピンニングを設定します:
app/src/main/res/xml/network_security_config.xml
AndroidManifest.xml に次を追加します: