Firebaseでの認証までのサンプルです。
build.gradle(Module.app)
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
testCompile 'junit:junit:4.12'
compile 'com.android.support:design:25.3.1'
compile 'com.google.firebase:firebase-auth:10.2.6'
compile 'com.google.firebase:firebase-database:10.2.6'
}
activity_main.xml
レイアウトは簡単なログイン画面を用意しました。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/new_user_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="ログイン画面"
android:textAppearance="?android:attr/textAppearanceLarge" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/new_user_text_view"
android:layout_marginTop="20dp">
<TextView
android:id="@+id/email_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/email_edit_text"
android:layout_alignRight="@+id/password_text_view"
android:layout_alignTop="@+id/email_edit_text"
android:gravity="center"
android:text="Email:"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@android:color/black" />
<TextView
android:id="@+id/password_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/password_edit_text"
android:layout_alignTop="@+id/password_edit_text"
android:gravity="center"
android:text="Password:"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@android:color/black" />
<EditText
android:id="@+id/email_edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/email_text_view"
android:text="" />
<EditText
android:id="@+id/password_edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/email_edit_text"
android:layout_toRightOf="@+id/password_text_view"
android:inputType="textPassword"
android:text="" />
<Button
android:id="@+id/login_user_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/password_edit_text"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dp"
android:background="@color/colorPrimary"
android:text="ログイン"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@android:color/white"
android:textStyle="bold" />
<Button
android:id="@+id/create_user_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/login_user_button"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dp"
android:background="@color/colorPrimary"
android:text="新規登録"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@android:color/white"
android:textStyle="bold" />
</RelativeLayout>
</RelativeLayout>
MainAvtivity.java
private FirebaseAuth mAuth
private FirebaseAuth.AuthStateListener mAuthListener;;
private Button createUserButton;
private Button loginUserBotton;
private EditText emailEditText;
private EditText passwordEditText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mAuth = FirebaseAuth.getInstance();
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null) {
// サインイン
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);
return;
} else {
// サインアウト
}
}
};
emailEditText = (EditText) findViewById(R.id.email_edit_text);
passwordEditText = (EditText) findViewById(R.id.password_edit_text);
createUserButton = (Button) findViewById(R.id.create_user_button);
createUserButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mAuth.createUserWithEmailAndPassword(emailEditText.getText().toString(), passwordEditText.getText().toString())
.addOnCompleteListener(MainActivity.this, new OnCompleteListener() {
@Override
public void onComplete(@NonNull Task task) {
if(task.isSuccessful()) {
// ユーザー作成完了
} else {
Toast.makeText(MainActivity.this, "登録に失敗しました。", Toast.LENGTH_SHORT).show();
}
}
});
}
});
loginUserBotton = (Button) findViewById(R.id.login_user_button);
loginUserBotton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mAuth.signInWithEmailAndPassword(emailEditText.getText().toString(), passwordEditText.getText().toString())
.addOnCompleteListener(MainActivity.this, new OnCompleteListener() {
@Override
public void onComplete(@NonNull Task task) {
if(task.isSuccessful()) {
// ユーザーログイン完了
} else {
Toast.makeText(MainActivity.this, "ログインに失敗しました。", Toast.LENGTH_SHORT).show();
}
}
});
}
});
}
@Override
public void onStart() {
super.onStart();
mAuth.addAuthStateListener(mAuthListener);
}
@Override
public void onStop() {
super.onStop();
if (mAuthListener != null) {
mAuth.removeAuthStateListener(mAuthListener);
}
}
onAuthStateChanged:
認証の状態(サインイン、サインアウト)が変わったときログインした時、起動した時などで返ってきます。
createUserWithEmailAndPassword:
ユーザの登録を行います。
signInWithEmailAndPassword:
登録しているユーザのログイン認証をします。
他に認証をするために、FirebaseConsoleでログイン方法の設定をしなければいけません。
Authenticationのログイン方法で、メール/パスワードを有効にします。
以上で、ログイン認証ができるようになります。
今回のアプリのレイアウトです。
※パスワードは短いとエラーが返ってきます。
以上です。