|
22 | 22 | import android.util.Log;
|
23 | 23 |
|
24 | 24 | import com.firebase.ui.auth.BuildConfig;
|
| 25 | +import com.firebase.ui.auth.provider.IDPProviderParcel; |
25 | 26 | import com.firebase.ui.auth.ui.ActivityBase;
|
26 | 27 | import com.firebase.ui.auth.ui.ActivityHelper;
|
27 | 28 | import com.firebase.ui.auth.ui.FlowParameters;
|
| 29 | +import com.firebase.ui.auth.ui.email.SignInNoPasswordActivity; |
28 | 30 | import com.firebase.ui.auth.ui.idp.AuthMethodPickerActivity;
|
29 | 31 | import com.firebase.ui.auth.ui.idp.IDPSignInContainerActivity;
|
30 | 32 | import com.firebase.ui.auth.util.CredentialsAPI;
|
|
34 | 36 | import com.google.android.gms.tasks.OnFailureListener;
|
35 | 37 | import com.google.android.gms.tasks.Task;
|
36 | 38 | import com.google.firebase.auth.AuthResult;
|
| 39 | +import com.google.firebase.auth.EmailAuthProvider; |
37 | 40 | import com.google.firebase.auth.FacebookAuthProvider;
|
38 | 41 | import com.google.firebase.auth.GoogleAuthProvider;
|
39 | 42 |
|
| 43 | +import java.util.List; |
| 44 | + |
40 | 45 | public class ChooseAccountActivity extends ActivityBase {
|
41 | 46 | private static final String TAG = "ChooseAccountActivity";
|
42 | 47 | private static final int RC_CREDENTIALS_READ = 2;
|
43 | 48 | private static final int RC_IDP_SIGNIN = 3;
|
44 | 49 | private static final int RC_AUTH_METHOD_PICKER = 4;
|
| 50 | + private static final int RC_EMAIL_FLOW = 5; |
45 | 51 |
|
46 | 52 | protected CredentialsAPI mCredentialsApi;
|
47 | 53 |
|
@@ -73,7 +79,6 @@ protected void onStop() {
|
73 | 79 | super.onStop();
|
74 | 80 | }
|
75 | 81 |
|
76 |
| - |
77 | 82 | public void onCredentialsApiConnected() {
|
78 | 83 | // called back when the CredentialsAPI connects
|
79 | 84 | String email = mCredentialsApi.getEmailFromCredential();
|
@@ -101,12 +106,24 @@ public void onComplete(@NonNull Task<AuthResult> task) {
|
101 | 106 | // resolve credential
|
102 | 107 | mCredentialsApi.resolveSavedEmails(this);
|
103 | 108 | } else {
|
104 |
| - startActivityForResult( |
105 |
| - AuthMethodPickerActivity.createIntent( |
106 |
| - this, |
107 |
| - mActivityHelper.flowParams), |
108 |
| - RC_AUTH_METHOD_PICKER); |
| 109 | + startAuthMethodChoice(); |
109 | 110 | }
|
| 111 | + } else { |
| 112 | + startAuthMethodChoice(); |
| 113 | + } |
| 114 | + } |
| 115 | + |
| 116 | + private void startAuthMethodChoice() { |
| 117 | + List<IDPProviderParcel> providers = mActivityHelper.flowParams.providerInfo; |
| 118 | + if ( providers.size() == 1 |
| 119 | + && providers.get(0).getProviderType().equals(EmailAuthProvider.PROVIDER_ID)) { |
| 120 | + startActivityForResult( |
| 121 | + SignInNoPasswordActivity.createIntent( |
| 122 | + this, |
| 123 | + mActivityHelper.flowParams, |
| 124 | + null |
| 125 | + ), |
| 126 | + RC_EMAIL_FLOW); |
110 | 127 | } else {
|
111 | 128 | startActivityForResult(
|
112 | 129 | AuthMethodPickerActivity.createIntent(
|
@@ -166,18 +183,16 @@ public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
166 | 183 | );
|
167 | 184 | } else if (resultCode == RESULT_CANCELED) {
|
168 | 185 | // Smart lock selector cancelled, go to the AuthMethodPicker screen
|
169 |
| - startActivityForResult( |
170 |
| - AuthMethodPickerActivity.createIntent( |
171 |
| - this, |
172 |
| - mActivityHelper.flowParams), |
173 |
| - RC_AUTH_METHOD_PICKER); |
| 186 | + startAuthMethodChoice(); |
174 | 187 | } else if (resultCode == RESULT_FIRST_USER) {
|
175 | 188 | // TODO: (serikb) figure out flow
|
176 | 189 | }
|
177 | 190 | } else if (requestCode == RC_IDP_SIGNIN) {
|
178 | 191 | finish(resultCode, new Intent());
|
179 | 192 | } else if (requestCode == RC_AUTH_METHOD_PICKER) {
|
180 | 193 | finish(resultCode, new Intent());
|
| 194 | + } else if (requestCode == RC_EMAIL_FLOW) { |
| 195 | + finish(resultCode, new Intent()); |
181 | 196 | }
|
182 | 197 | }
|
183 | 198 |
|
|
0 commit comments