Skip to content

Commit b3061b6

Browse files
committed
Add email verification
Change-Id: Ib5719d6b3d1111fa083fca7a5ac692d44bbbc774
1 parent 07d667d commit b3061b6

File tree

3 files changed

+68
-10
lines changed

3 files changed

+68
-10
lines changed

auth/app/src/main/java/com/google/firebase/quickstart/auth/EmailPasswordActivity.java

Lines changed: 40 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ public void onCreate(Bundle savedInstanceState) {
6464
findViewById(R.id.email_sign_in_button).setOnClickListener(this);
6565
findViewById(R.id.email_create_account_button).setOnClickListener(this);
6666
findViewById(R.id.sign_out_button).setOnClickListener(this);
67+
findViewById(R.id.verify_email_button).setOnClickListener(this);
6768

6869
// [START initialize_auth]
6970
mAuth = FirebaseAuth.getInstance();
@@ -178,6 +179,37 @@ private void signOut() {
178179
updateUI(null);
179180
}
180181

182+
private void sendEmailVerification() {
183+
// Disable button
184+
findViewById(R.id.verify_email_button).setEnabled(false);
185+
186+
// Send verification email
187+
// [START send_email_verification]
188+
final FirebaseUser user = mAuth.getCurrentUser();
189+
user.sendEmailVerification()
190+
.addOnCompleteListener(this, new OnCompleteListener<Void>() {
191+
@Override
192+
public void onComplete(@NonNull Task<Void> task) {
193+
// [START_EXCLUDE]
194+
// Re-enable button
195+
findViewById(R.id.verify_email_button).setEnabled(true);
196+
197+
if (task.isSuccessful()) {
198+
Toast.makeText(EmailPasswordActivity.this,
199+
"Verification email sent to " + user.getEmail(),
200+
Toast.LENGTH_SHORT).show();
201+
} else {
202+
Log.e(TAG, "sendEmailVerification", task.getException());
203+
Toast.makeText(EmailPasswordActivity.this,
204+
"Failed to send verification email.",
205+
Toast.LENGTH_SHORT).show();
206+
}
207+
// [END_EXCLUDE]
208+
}
209+
});
210+
// [END send_email_verification]
211+
}
212+
181213
private boolean validateForm() {
182214
boolean valid = true;
183215

@@ -203,19 +235,22 @@ private boolean validateForm() {
203235
private void updateUI(FirebaseUser user) {
204236
hideProgressDialog();
205237
if (user != null) {
206-
mStatusTextView.setText(getString(R.string.emailpassword_status_fmt, user.getEmail()));
238+
mStatusTextView.setText(getString(R.string.emailpassword_status_fmt,
239+
user.getEmail(), user.isEmailVerified()));
207240
mDetailTextView.setText(getString(R.string.firebase_status_fmt, user.getUid()));
208241

209242
findViewById(R.id.email_password_buttons).setVisibility(View.GONE);
210243
findViewById(R.id.email_password_fields).setVisibility(View.GONE);
211-
findViewById(R.id.sign_out_button).setVisibility(View.VISIBLE);
244+
findViewById(R.id.signed_in_buttons).setVisibility(View.VISIBLE);
245+
246+
findViewById(R.id.verify_email_button).setEnabled(!user.isEmailVerified());
212247
} else {
213248
mStatusTextView.setText(R.string.signed_out);
214249
mDetailTextView.setText(null);
215250

216251
findViewById(R.id.email_password_buttons).setVisibility(View.VISIBLE);
217252
findViewById(R.id.email_password_fields).setVisibility(View.VISIBLE);
218-
findViewById(R.id.sign_out_button).setVisibility(View.GONE);
253+
findViewById(R.id.signed_in_buttons).setVisibility(View.GONE);
219254
}
220255
}
221256

@@ -228,6 +263,8 @@ public void onClick(View v) {
228263
signIn(mEmailField.getText().toString(), mPasswordField.getText().toString());
229264
} else if (i == R.id.sign_out_button) {
230265
signOut();
266+
} else if (i == R.id.verify_email_button) {
267+
sendEmailVerification();
231268
}
232269
}
233270
}

auth/app/src/main/res/layout/activity_emailpassword.xml

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -101,14 +101,34 @@
101101
android:theme="@style/ThemeOverlay.MyDarkButton" />
102102
</LinearLayout>
103103

104-
<Button
105-
android:id="@+id/sign_out_button"
106-
android:layout_width="wrap_content"
104+
<LinearLayout
105+
android:id="@+id/signed_in_buttons"
106+
android:layout_width="fill_parent"
107107
android:layout_height="wrap_content"
108108
android:layout_centerInParent="true"
109-
android:text="@string/sign_out"
110-
android:theme="@style/ThemeOverlay.MyDarkButton"
111-
android:visibility="gone" />
109+
android:orientation="horizontal"
110+
android:paddingLeft="16dp"
111+
android:paddingRight="16dp"
112+
android:visibility="gone"
113+
android:weightSum="2.0">
114+
115+
<Button
116+
android:id="@+id/sign_out_button"
117+
android:layout_width="0dp"
118+
android:layout_height="wrap_content"
119+
android:layout_weight="1.0"
120+
android:text="@string/sign_out"
121+
android:theme="@style/ThemeOverlay.MyDarkButton" />
122+
123+
<Button
124+
android:id="@+id/verify_email_button"
125+
android:layout_width="0dp"
126+
android:layout_height="wrap_content"
127+
android:layout_weight="1.0"
128+
android:text="@string/verify_email"
129+
android:theme="@style/ThemeOverlay.MyDarkButton" />
130+
131+
</LinearLayout>
112132

113133
</RelativeLayout>
114134

auth/app/src/main/res/values/strings.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
<string name="sign_in">Sign In</string>
2828
<string name="create_account">Create Account</string>
2929
<string name="sign_out">Sign Out</string>
30+
<string name="verify_email">Verify Email</string>
3031
<string name="disconnect">Disconnect</string>
3132
<string name="loading">Loading…</string>
3233
<string name="custom_token">Custom Token</string>
@@ -46,7 +47,7 @@
4647
<string name="facebook_status_fmt">Facebook User: %s</string>
4748
<string name="facebook_title_text">Facebook Login</string>
4849

49-
<string name="emailpassword_status_fmt">Email User: %s</string>
50+
<string name="emailpassword_status_fmt">Email User: %1$s (verified: %2$b)</string>
5051
<string name="emailpassword_title_text">Email and Password</string>
5152

5253
<string name="twitter_status_fmt">Twitter User: %s</string>

0 commit comments

Comments
 (0)