読者です 読者をやめる 読者になる 読者になる

FirebaseでEmail/Password認証(Android編)

概要

Androidアプリを使ってFirebaseのEmail/Password認証を試してみました。

Androidアプリは、Android Studioを使って作成しました。

  1. Firebaseアプリを作成する
  2. Firebase用Androidアプリを作成する
  3. データを書き込む

Firebaseアプリを作成する

  • Firebase管理画面で、Firebaseアプリを作成します。
  • Email/Password認証を有効にします

Email/Password認証を有効にします

アプリ管理画面において、左側のメニューからLogin&Authを選択します。Email&PasswordタブのEnable Email &Password Authenticationにチェックを入れます。

f:id:unokun3:20150905155118p:plain

ユーザを作成します

画面の下にある「Add User」ボタンを押下して、ユーザを作成します。作成したユーザはRegistered Usersに表示されます。

f:id:unokun3:20150905155210p:plain

f:id:unokun3:20150905155651p:plain

アクセスルールを追加します。

画面左側のSecurity & Rulesタブを押下して、アプリのコンテンツアクセスルールを編集します。アプリ作成時の認証は誰でも読み書き可能。

{
    "rules": {
        ".read": true,
        ".write": true
    }
}

これを以下のように変更します。

{
    "rules": {
        ".read": "auth !== null",
        ".write": "auth !== null"
    }
}

Firebase用Androidアプリを作成する

Android Quickstart - Firebaseを参考にしてAndroidアプリを作成します。

  • 新規プロジェクトを作成する
  • Gradleファイルを編集します
  • permissionを追加します

新規プロジェクトを作成する

Android StudioでFile-New Projectから新規プロジェクトを作成します。Minimum SDKは、デフォルトのAPI 15にしておきます。Activityのタイプは何でも可です。

Gradleファイルを編集します

Gradleファイル(build.gradle)を編集します。dependenciesに記述したFirebaseクライアントライブラリが追加されます。

android {
    packagingOptions {
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE-FIREBASE.txt'
        exclude 'META-INF/NOTICE'
    }
    ...
}
dependencies {
    ...
    compile 'com.firebase:firebase-client-android:2.0.3+'
}

permissionを追加します

AndroidManifest.xmlにインターネットアクセス用permissionを追加します。

    

データを書き込む

onCreateに以下のデータを書き込み処理を追加します。

        Firebase.setAndroidContext(this);

        Firebase firebaseRef = new Firebase(アプリのURL);
        Firebase child = firebaseRef.child(パス);
        Map data = new HashMap();
        data.put("content", "Hello");
        child.setValue(data, this);

認証した場合

データをセットできます。認証情報はクライアントライブラリが保持するため、次回以降は認証は不要です。

        firebaseRef.authWithPassword(Eメールアドレス, パスワード, this);

認証していない場合

認証しないかあるいは認証を解除すると、Permissionエラーになります。

        firebaseRef.unauth();

参考情報