Skip to content

Commit 7d22c4e

Browse files
author
Aaron Mandle
committed
Save credentials with the correct id provider, other minor fixes
Change-Id: I8976b3a34062cbaf239d0f00ab3b2c02fa08779f
1 parent b1f5a55 commit 7d22c4e

File tree

4 files changed

+34
-20
lines changed

4 files changed

+34
-20
lines changed

auth/src/main/java/com/firebase/ui/auth/ui/account_link/AccountLinkInitActivity.java

Lines changed: 30 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,9 @@ public class AccountLinkInitActivity extends AppCompatBase {
4141
private static final int RC_SAVE_CREDENTIALS = 3;
4242
private static final int RC_WELCOME_BACK_IDP_PROMPT = 4;
4343
private static final int RC_WELCOME_BACK_PASSWORD_PROMPT = 5;
44-
private static final List<Integer> REQUEST_CODES = Arrays.asList(
45-
RC_SAVE_CREDENTIALS,
44+
45+
// request codes where we pass the result back to the calling activity
46+
private static final List<Integer> CHECKED_REQUEST_CODES = Arrays.asList(
4647
RC_WELCOME_BACK_IDP_PROMPT,
4748
RC_WELCOME_BACK_PASSWORD_PROMPT);
4849

@@ -62,8 +63,10 @@ protected void onCreate(Bundle savedInstanceState) {
6263
}
6364

6465
public void onActivityResult(int requestCode, int resultCode, Intent data) {
65-
if (REQUEST_CODES.contains(requestCode)) {
66+
if (CHECKED_REQUEST_CODES.contains(requestCode)) {
6667
finish(resultCode, data);
68+
} else if (RC_SAVE_CREDENTIALS == requestCode){
69+
finish(RESULT_OK, new Intent());
6770
}
6871
}
6972

@@ -86,22 +89,22 @@ public void onComplete(@NonNull Task<ProviderQueryResult> task) {
8689
startActivityForResult(SaveCredentialsActivity.createIntent(
8790
getApplicationContext(),
8891
mActivityHelper.flowParams,
92+
null,
8993
email,
9094
password,
9195
provider,
92-
null,
93-
mActivityHelper.getAppName()), RC_SAVE_CREDENTIALS);
96+
null), RC_SAVE_CREDENTIALS);
9497
} else if (providers.size() == 1) {
9598
if (providers.get(0).equals(provider)) {
9699
// existing account but has this IDP linked
97100
startActivityForResult(SaveCredentialsActivity.createIntent(
98101
AccountLinkInitActivity.this,
99102
mActivityHelper.flowParams,
103+
null,
100104
email,
101105
password,
102106
provider,
103-
null,
104-
mActivityHelper.getAppName()),
107+
null),
105108
RC_SAVE_CREDENTIALS);
106109
} else {
107110
if (providers.get(0).equals(EmailAuthProvider.PROVIDER_ID)) {
@@ -124,13 +127,26 @@ public void onComplete(@NonNull Task<ProviderQueryResult> task) {
124127
}
125128
} else {
126129
// more than one providers
127-
startActivityForResult(WelcomeBackIDPPrompt.createIntent(
128-
getApplicationContext(),
129-
mActivityHelper.flowParams,
130-
provider,
131-
mIdpResponse,
132-
email),
133-
RC_WELCOME_BACK_IDP_PROMPT);
130+
if (providers.contains(provider)) {
131+
// this provider is already linked
132+
startActivityForResult(SaveCredentialsActivity.createIntent(
133+
AccountLinkInitActivity.this,
134+
mActivityHelper.flowParams,
135+
null,
136+
email,
137+
password,
138+
provider,
139+
null),
140+
RC_SAVE_CREDENTIALS);
141+
} else {
142+
startActivityForResult(WelcomeBackIDPPrompt.createIntent(
143+
getApplicationContext(),
144+
mActivityHelper.flowParams,
145+
provider,
146+
mIdpResponse,
147+
email),
148+
RC_WELCOME_BACK_IDP_PROMPT);
149+
}
134150
}
135151
}
136152
});

auth/src/main/java/com/firebase/ui/auth/ui/account_link/SaveCredentialsActivity.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import android.support.annotation.NonNull;
2424
import android.support.annotation.Nullable;
2525
import android.util.Log;
26-
import android.widget.Toast;
2726

2827
import com.firebase.ui.auth.BuildConfig;
2928
import com.firebase.ui.auth.R;
@@ -151,7 +150,6 @@ public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
151150
public void onResult(@NonNull Status status) {
152151

153152
if (status.isSuccess()) {
154-
Toast.makeText(getApplicationContext(), "Credential saved", Toast.LENGTH_SHORT).show();
155153
finish(RESULT_OK, getIntent());
156154
} else {
157155
if (status.hasResolution()) {

auth/src/main/java/com/firebase/ui/auth/ui/idp/AuthMethodPickerActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ public void onComplete(
207207
firebaseUser.getDisplayName(),
208208
firebaseUser.getEmail(),
209209
null,
210-
firebaseUser.getProviderId(),
210+
response.getProviderType(),
211211
photoUrl
212212
), RC_ACCOUNT_LINK);
213213
}

auth/src/main/java/com/firebase/ui/auth/ui/idp/IDPSignInContainerActivity.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,10 +79,10 @@ protected void onCreate(Bundle savedInstanceState) {
7979
private void startAccountLinkingActivity(FirebaseUser firebaseUser, IDPResponse response) {
8080
List<String> providers = firebaseUser.getProviders();
8181
String provider = null;
82-
if (providers.size() == 1) {
83-
provider = providers.get(0);
82+
if (providers.isEmpty()) {
83+
Log.e(TAG, "User has no existing providers to link with" );
8484
} else {
85-
Log.e(TAG, "Expecting a single provider, received :" + providers.size());
85+
provider = firebaseUser.getProviders().get(0);
8686
}
8787
startActivityForResult(AccountLinkInitActivity.createIntent(
8888
this,

0 commit comments

Comments
 (0)