diff --git a/app/src/main/java/com/firebase/uidemo/auth/AuthUiActivity.java b/app/src/main/java/com/firebase/uidemo/auth/AuthUiActivity.java
index 652624e7a..bb32351b2 100644
--- a/app/src/main/java/com/firebase/uidemo/auth/AuthUiActivity.java
+++ b/app/src/main/java/com/firebase/uidemo/auth/AuthUiActivity.java
@@ -33,6 +33,7 @@
import android.widget.TextView;
import com.firebase.ui.auth.AuthUI;
import com.firebase.ui.auth.AuthUI.IdpConfig;
+import com.firebase.ui.auth.IdpResponse;
import com.firebase.ui.auth.ui.ResultCodes;
import com.firebase.uidemo.R;
import com.google.android.gms.common.Scopes;
@@ -128,7 +129,7 @@ public void onCreate(Bundle savedInstanceState) {
FirebaseAuth auth = FirebaseAuth.getInstance();
if (auth.getCurrentUser() != null) {
- startActivity(SignedInActivity.createIntent(this));
+ startActivity(SignedInActivity.createIntent(this, null));
finish();
}
@@ -219,7 +220,7 @@ private void setFacebookScopesEnabled(boolean enabled) {
@MainThread
private void handleSignInResponse(int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
- startActivity(SignedInActivity.createIntent(this));
+ startActivity(SignedInActivity.createIntent(this, IdpResponse.fromResultIntent(data)));
finish();
return;
}
diff --git a/app/src/main/java/com/firebase/uidemo/auth/SignedInActivity.java b/app/src/main/java/com/firebase/uidemo/auth/SignedInActivity.java
index 4d6b4bdb8..d6f000ecb 100644
--- a/app/src/main/java/com/firebase/uidemo/auth/SignedInActivity.java
+++ b/app/src/main/java/com/firebase/uidemo/auth/SignedInActivity.java
@@ -28,9 +28,12 @@
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
-
+import butterknife.BindView;
+import butterknife.ButterKnife;
+import butterknife.OnClick;
import com.bumptech.glide.Glide;
import com.firebase.ui.auth.AuthUI;
+import com.firebase.ui.auth.IdpResponse;
import com.firebase.uidemo.R;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
@@ -39,14 +42,10 @@
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.auth.GoogleAuthProvider;
-
import java.util.Iterator;
-import butterknife.BindView;
-import butterknife.ButterKnife;
-import butterknife.OnClick;
-
public class SignedInActivity extends AppCompatActivity {
+ private static final String EXTRA_IDP_RESPONSE = "extra_idp_response";
@BindView(android.R.id.content)
View mRootView;
@@ -77,6 +76,7 @@ public void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.signed_in_layout);
ButterKnife.bind(this);
populateProfile();
+ populateIdpToken();
}
@OnClick(R.id.sign_out)
@@ -173,15 +173,34 @@ private void populateProfile() {
mEnabledProviders.setText(providerList);
}
+ private void populateIdpToken() {
+ IdpResponse idpResponse = getIntent().getParcelableExtra(EXTRA_IDP_RESPONSE);
+ if (idpResponse != null) {
+ String token = idpResponse.getIdpToken();
+ String secret = idpResponse.getIdpSecret();
+ if (token == null) {
+ findViewById(R.id.idp_token_layout).setVisibility(View.GONE);
+ } else {
+ ((TextView) findViewById(R.id.idp_token)).setText(token);
+ }
+ if (secret == null) {
+ findViewById(R.id.idp_secret_layout).setVisibility(View.GONE);
+ } else {
+ ((TextView) findViewById(R.id.idp_secret)).setText(secret);
+ }
+ }
+ }
+
@MainThread
private void showSnackbar(@StringRes int errorMessageRes) {
Snackbar.make(mRootView, errorMessageRes, Snackbar.LENGTH_LONG)
.show();
}
- public static Intent createIntent(Context context) {
+ public static Intent createIntent(Context context, IdpResponse idpResponse) {
Intent in = new Intent();
in.setClass(context, SignedInActivity.class);
+ in.putExtra(EXTRA_IDP_RESPONSE, idpResponse);
return in;
}
}
diff --git a/app/src/main/res/layout/signed_in_layout.xml b/app/src/main/res/layout/signed_in_layout.xml
index b94f173fe..b70ed8ec4 100644
--- a/app/src/main/res/layout/signed_in_layout.xml
+++ b/app/src/main/res/layout/signed_in_layout.xml
@@ -90,8 +90,41 @@
android:layout_height="wrap_content" />
+
+
+
+
+
+
+
+
+
+
+
-
\ No newline at end of file
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index b6188e6fd..260a9a8a2 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -55,4 +55,6 @@
Example extra Facebook scopes
Friends
Photos
+ IDP Token
+ IDP Secret
diff --git a/auth/README.md b/auth/README.md
index 3b92a3b8d..adbc29ab5 100644
--- a/auth/README.md
+++ b/auth/README.md
@@ -199,6 +199,7 @@ startActivityForResult(
#### Handling the sign-in response
+#####Response codes
The authentication flow only provides three response codes:
`Activity.RESULT_OK` if a user is signed in, `Activity.RESULT_CANCELLED` if
sign in failed, and `ResultCodes.RESULT_NO_NETWORK` if sign in failed due to a lack of network connectivity.
@@ -239,6 +240,23 @@ see the
[Firebase Auth documentation](https://firebase.google.com/docs/auth/android/manage-users#get_the_currently_signed-in_user)
for more information.
+##### ID Tokens
+To retrieve the ID token that the IDP returned, you can extract an `IdpResponse` from the result
+Intent.
+
+```java
+protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+ if (resultCode == RESULT_OK) {
+ IdpResponse idpResponse = IdpResponse.fromResultIntent(data);
+ startActivity(new Intent(this, WelcomeBackActivity.class)
+ .putExtra("my_token". idpResponse.getIdpToken()));
+ }
+}
+```
+
+Twitter also returns an AuthToken Secret which can be accessed with `idpResponse.getIdpSecret()`.
+
### Sign out
With the integrations provided by AuthUI, signing out a user is a multi-stage process:
diff --git a/auth/src/main/AndroidManifest.xml b/auth/src/main/AndroidManifest.xml
index cafe340f7..ff27ea34f 100644
--- a/auth/src/main/AndroidManifest.xml
+++ b/auth/src/main/AndroidManifest.xml
@@ -39,7 +39,7 @@
android:label="@string/default_toolbar_title"
android:theme="@style/FirebaseUI.Translucent" />
CREATOR = new Creator() {
+ @Override
+ public IdpResponse createFromParcel(Parcel in) {
+ return new IdpResponse(
+ in.readString(),
+ in.readString(),
+ in.readString(),
+ in.readString()
+ );
+ }
+
+ @Override
+ public IdpResponse[] newArray(int size) {
+ return new IdpResponse[size];
+ }
+ };
+
+ /**
+ * Get the type of provider. e.g. {@link AuthUI#GOOGLE_PROVIDER}
+ */
+ public String getProviderType() {
+ return mProviderId;
+ }
+
+ /**
+ * Get the token received as a result of logging in with the specified IDP
+ */
+ @Nullable
+ public String getIdpToken() {
+ return mToken;
+ }
+
+ /**
+ * Twitter only. Return the token secret received as a result of logging in with Twitter.
+ */
+ @Nullable
+ public String getIdpSecret() {
+ return mSecret;
+ }
+
+ /**
+ * Get the email used to sign in.
+ */
+ @Nullable
+ public String getEmail() {
+ return mEmail;
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeString(mProviderId);
+ dest.writeString(mEmail);
+ dest.writeString(mToken);
+ dest.writeString(mSecret);
+ }
+
+ /**
+ * Extract the {@link IdpResponse} from the flow's result intent.
+ * @param resultIntent The intent which {@code onActivityResult} was called with.
+ * @return The IdpResponse containing the token(s) from signing in with the Idp
+ */
+ @Nullable
+ public static IdpResponse fromResultIntent(Intent resultIntent) {
+ return resultIntent.getParcelableExtra(ExtraConstants.EXTRA_IDP_RESPONSE);
+ }
+}
diff --git a/auth/src/main/java/com/firebase/ui/auth/provider/FacebookProvider.java b/auth/src/main/java/com/firebase/ui/auth/provider/FacebookProvider.java
index 13f6819af..d4bfaa441 100644
--- a/auth/src/main/java/com/firebase/ui/auth/provider/FacebookProvider.java
+++ b/auth/src/main/java/com/firebase/ui/auth/provider/FacebookProvider.java
@@ -19,7 +19,6 @@
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
-
import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
@@ -30,19 +29,16 @@
import com.facebook.login.LoginResult;
import com.firebase.ui.auth.AuthUI.IdpConfig;
import com.firebase.ui.auth.BuildConfig;
+import com.firebase.ui.auth.IdpResponse;
import com.firebase.ui.auth.R;
import com.google.firebase.auth.AuthCredential;
import com.google.firebase.auth.FacebookAuthProvider;
-
-import org.json.JSONException;
-import org.json.JSONObject;
-
import java.util.ArrayList;
import java.util.List;
+import org.json.JSONException;
+import org.json.JSONObject;
-public class FacebookProvider implements IDPProvider, FacebookCallback {
- public static final String ACCESS_TOKEN = "facebook_access_token";
-
+public class FacebookProvider implements IdpProvider, FacebookCallback {
protected static final String ERROR = "err";
protected static final String ERROR_MSG = "err_msg";
@@ -52,7 +48,7 @@ public class FacebookProvider implements IDPProvider, FacebookCallback mScopes;
private CallbackManager mCallbackManager;
- private IDPCallback mCallbackObject;
+ private IdpCallback mCallbackObject;
public FacebookProvider(Context appContext, IdpConfig idpConfig) {
mCallbackManager = CallbackManager.Factory.create();
@@ -107,7 +103,7 @@ public void startLogin(Activity activity) {
}
@Override
- public void setAuthenticationCallback(IDPCallback callback) {
+ public void setAuthenticationCallback(IdpCallback callback) {
this.mCallbackObject = callback;
}
@@ -144,18 +140,19 @@ public void onCompleted(JSONObject object, GraphResponse response) {
request.executeAsync();
}
- private IDPResponse createIDPResponse(LoginResult loginResult, String email) {
- Bundle response = new Bundle();
- response.putString(ACCESS_TOKEN, loginResult.getAccessToken().getToken());
- return new IDPResponse(FacebookAuthProvider.PROVIDER_ID, email, response);
+ private IdpResponse createIDPResponse(LoginResult loginResult, String email) {
+ return new IdpResponse(
+ FacebookAuthProvider.PROVIDER_ID,
+ email,
+ loginResult.getAccessToken().getToken());
}
- public static AuthCredential createAuthCredential(IDPResponse response) {
+ public static AuthCredential createAuthCredential(IdpResponse response) {
if (!response.getProviderType().equals(FacebookAuthProvider.PROVIDER_ID)) {
return null;
}
return FacebookAuthProvider
- .getCredential(response.getResponse().getString(ACCESS_TOKEN));
+ .getCredential(response.getIdpToken());
}
@Override
diff --git a/auth/src/main/java/com/firebase/ui/auth/provider/GoogleProvider.java b/auth/src/main/java/com/firebase/ui/auth/provider/GoogleProvider.java
index eedf17d8d..cb23873ab 100644
--- a/auth/src/main/java/com/firebase/ui/auth/provider/GoogleProvider.java
+++ b/auth/src/main/java/com/firebase/ui/auth/provider/GoogleProvider.java
@@ -27,6 +27,7 @@
import android.view.View.OnClickListener;
import com.firebase.ui.auth.AuthUI.IdpConfig;
+import com.firebase.ui.auth.IdpResponse;
import com.firebase.ui.auth.R;
import com.google.android.gms.auth.api.Auth;
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
@@ -37,12 +38,9 @@
import com.google.android.gms.common.api.Scope;
import com.google.firebase.auth.AuthCredential;
import com.google.firebase.auth.GoogleAuthProvider;
-import java.util.List;
public class GoogleProvider implements
- IDPProvider, OnClickListener, GoogleApiClient.OnConnectionFailedListener {
-
- public static final String TOKEN_KEY = "token_key";
+ IdpProvider, OnClickListener, GoogleApiClient.OnConnectionFailedListener {
private static final String TAG = "GoogleProvider";
private static final int AUTO_MANAGE_ID = 1;
@@ -50,7 +48,7 @@ public class GoogleProvider implements
private static final String ERROR_KEY = "error";
private GoogleApiClient mGoogleApiClient;
private Activity mActivity;
- private IDPCallback mIDPCallback;
+ private IdpCallback mIDPCallback;
public GoogleProvider(FragmentActivity activity, IdpConfig idpConfig) {
this(activity, idpConfig, null);
@@ -99,13 +97,12 @@ public String getProviderId() {
}
- public static AuthCredential createAuthCredential(IDPResponse response) {
- Bundle bundle = response.getResponse();
- return GoogleAuthProvider.getCredential(bundle.getString(TOKEN_KEY), null);
+ public static AuthCredential createAuthCredential(IdpResponse response) {
+ return GoogleAuthProvider.getCredential(response.getIdpToken(), null);
}
@Override
- public void setAuthenticationCallback(IDPCallback callback) {
+ public void setAuthenticationCallback(IdpCallback callback) {
mIDPCallback = callback;
}
@@ -116,10 +113,9 @@ public void disconnect() {
}
}
- private IDPResponse createIDPResponse(GoogleSignInAccount account) {
- Bundle response = new Bundle();
- response.putString(TOKEN_KEY, account.getIdToken());
- return new IDPResponse(GoogleAuthProvider.PROVIDER_ID, account.getEmail(), response);
+ private IdpResponse createIDPResponse(GoogleSignInAccount account) {
+ return new IdpResponse(
+ GoogleAuthProvider.PROVIDER_ID, account.getEmail(), account.getIdToken());
}
@Override
diff --git a/auth/src/main/java/com/firebase/ui/auth/provider/IDPResponse.java b/auth/src/main/java/com/firebase/ui/auth/provider/IDPResponse.java
deleted file mode 100644
index 9c7777be5..000000000
--- a/auth/src/main/java/com/firebase/ui/auth/provider/IDPResponse.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright 2016 Google Inc. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
- * in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the
- * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
- * express or implied. See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.firebase.ui.auth.provider;
-
-import android.os.Bundle;
-import android.os.Parcel;
-import android.os.Parcelable;
-
-public class IDPResponse implements Parcelable {
-
- private final String mProviderId;
- private final String mEmail;
- private final Bundle mResponseBundle;
-
- public IDPResponse(String providerId, String email, Bundle response) {
- mProviderId = providerId;
- mEmail = email;
- mResponseBundle = response;
- }
-
- public static final Creator CREATOR = new Creator() {
- @Override
- public IDPResponse createFromParcel(Parcel in) {
- return new IDPResponse(
- in.readString(),
- in.readString(),
- in.readBundle()
- );
- }
-
- @Override
- public IDPResponse[] newArray(int size) {
- return new IDPResponse[size];
- }
- };
-
- public String getProviderType() {
- return mProviderId;
- }
-
- public Bundle getResponse() {
- return mResponseBundle;
- }
-
- public String getEmail() {
- return mEmail;
- }
-
- @Override
- public int describeContents() {
- return 0;
- }
-
- @Override
- public void writeToParcel(Parcel dest, int flags) {
- dest.writeString(mProviderId);
- dest.writeString(mEmail);
- dest.writeBundle(mResponseBundle);
- }
-}
diff --git a/auth/src/main/java/com/firebase/ui/auth/provider/IDPProvider.java b/auth/src/main/java/com/firebase/ui/auth/provider/IdpProvider.java
similarity index 83%
rename from auth/src/main/java/com/firebase/ui/auth/provider/IDPProvider.java
rename to auth/src/main/java/com/firebase/ui/auth/provider/IdpProvider.java
index f614cbc4e..2a117c30e 100644
--- a/auth/src/main/java/com/firebase/ui/auth/provider/IDPProvider.java
+++ b/auth/src/main/java/com/firebase/ui/auth/provider/IdpProvider.java
@@ -18,8 +18,9 @@
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
+import com.firebase.ui.auth.IdpResponse;
-public interface IDPProvider {
+public interface IdpProvider {
/**
* Retrieves the name of the IDP, for display on-screen.
@@ -28,14 +29,14 @@ public interface IDPProvider {
String getProviderId();
- void setAuthenticationCallback(IDPCallback callback);
+ void setAuthenticationCallback(IdpCallback callback);
void onActivityResult(int requestCode, int resultCode, Intent data);
void startLogin(Activity activity);
- public interface IDPCallback {
- public void onSuccess(IDPResponse idpResponse);
+ public interface IdpCallback {
+ public void onSuccess(IdpResponse idpResponse);
public void onFailure(Bundle extra);
}
}
diff --git a/auth/src/main/java/com/firebase/ui/auth/provider/TwitterProvider.java b/auth/src/main/java/com/firebase/ui/auth/provider/TwitterProvider.java
index c3a46dacc..007161648 100644
--- a/auth/src/main/java/com/firebase/ui/auth/provider/TwitterProvider.java
+++ b/auth/src/main/java/com/firebase/ui/auth/provider/TwitterProvider.java
@@ -5,6 +5,7 @@
import android.content.Intent;
import android.os.Bundle;
+import com.firebase.ui.auth.IdpResponse;
import com.firebase.ui.auth.R;
import com.google.firebase.auth.AuthCredential;
import com.google.firebase.auth.TwitterAuthProvider;
@@ -18,10 +19,8 @@
import io.fabric.sdk.android.Fabric;
-public class TwitterProvider extends Callback implements IDPProvider {
- public static final String EXTRA_AUTH_TOKEN = "extra_auth_token";
- public static final String EXTRA_AUTH_SECRET = "extra_auth_secret";
- private IDPCallback mCallbackObject;
+public class TwitterProvider extends Callback implements IdpProvider {
+ private IdpCallback mCallbackObject;
private TwitterAuthClient mTwitterAuthClient;
public TwitterProvider(Context appContext) {
@@ -43,7 +42,7 @@ public String getProviderId() {
}
@Override
- public void setAuthenticationCallback(IDPCallback callback) {
+ public void setAuthenticationCallback(IdpCallback callback) {
this.mCallbackObject = callback;
}
@@ -67,21 +66,21 @@ public void failure(TwitterException exception) {
mCallbackObject.onFailure(new Bundle());
}
- public static AuthCredential createAuthCredential(IDPResponse response) {
+ public static AuthCredential createAuthCredential(IdpResponse response) {
if (!response.getProviderType().equalsIgnoreCase(TwitterAuthProvider.PROVIDER_ID)){
return null;
}
return TwitterAuthProvider.getCredential(
- response.getResponse().getString(EXTRA_AUTH_TOKEN),
- response.getResponse().getString(EXTRA_AUTH_SECRET));
+ response.getIdpToken(),
+ response.getIdpSecret());
}
- private IDPResponse createIDPResponse(TwitterSession twitterSession) {
- Bundle response = new Bundle();
- response.putString(EXTRA_AUTH_TOKEN, twitterSession.getAuthToken().token);
- response.putString(EXTRA_AUTH_SECRET, twitterSession.getAuthToken().secret);
- return new IDPResponse(TwitterAuthProvider.PROVIDER_ID, twitterSession.getUserName(), response);
+ private IdpResponse createIDPResponse(TwitterSession twitterSession) {
+ return new IdpResponse(
+ TwitterAuthProvider.PROVIDER_ID,
+ null,
+ twitterSession.getAuthToken().token,
+ twitterSession.getAuthToken().secret);
}
-
}
diff --git a/auth/src/main/java/com/firebase/ui/auth/ui/AcquireEmailHelper.java b/auth/src/main/java/com/firebase/ui/auth/ui/AcquireEmailHelper.java
index dff241ad0..4c11d904d 100644
--- a/auth/src/main/java/com/firebase/ui/auth/ui/AcquireEmailHelper.java
+++ b/auth/src/main/java/com/firebase/ui/auth/ui/AcquireEmailHelper.java
@@ -18,7 +18,7 @@
import android.support.annotation.NonNull;
import com.firebase.ui.auth.R;
-import com.firebase.ui.auth.ui.account_link.WelcomeBackIDPPrompt;
+import com.firebase.ui.auth.ui.account_link.WelcomeBackIdpPrompt;
import com.firebase.ui.auth.ui.email.RegisterEmailActivity;
import com.firebase.ui.auth.ui.email.SignInActivity;
import com.google.android.gms.tasks.OnCompleteListener;
@@ -90,7 +90,7 @@ private void startEmailHandler(String email, List providers) {
return;
}
- Intent intent = WelcomeBackIDPPrompt.createIntent(
+ Intent intent = WelcomeBackIdpPrompt.createIntent(
mActivityHelper.getApplicationContext(),
mActivityHelper.getFlowParams(),
provider,
diff --git a/auth/src/main/java/com/firebase/ui/auth/ui/AuthCredentialHelper.java b/auth/src/main/java/com/firebase/ui/auth/ui/AuthCredentialHelper.java
index 6362b5df8..d614b9fe3 100644
--- a/auth/src/main/java/com/firebase/ui/auth/ui/AuthCredentialHelper.java
+++ b/auth/src/main/java/com/firebase/ui/auth/ui/AuthCredentialHelper.java
@@ -18,7 +18,7 @@
import com.firebase.ui.auth.provider.FacebookProvider;
import com.firebase.ui.auth.provider.GoogleProvider;
-import com.firebase.ui.auth.provider.IDPResponse;
+import com.firebase.ui.auth.IdpResponse;
import com.google.firebase.auth.AuthCredential;
import com.google.firebase.auth.FacebookAuthProvider;
import com.google.firebase.auth.GoogleAuthProvider;
@@ -26,7 +26,7 @@
public class AuthCredentialHelper {
@Nullable
- public static AuthCredential getAuthCredential(IDPResponse idpResponse) {
+ public static AuthCredential getAuthCredential(IdpResponse idpResponse) {
switch (idpResponse.getProviderType()) {
case GoogleAuthProvider.PROVIDER_ID:
return GoogleProvider.createAuthCredential(idpResponse);
diff --git a/auth/src/main/java/com/firebase/ui/auth/ui/ChooseAccountActivity.java b/auth/src/main/java/com/firebase/ui/auth/ui/ChooseAccountActivity.java
index 2caf0cb01..54cbad225 100644
--- a/auth/src/main/java/com/firebase/ui/auth/ui/ChooseAccountActivity.java
+++ b/auth/src/main/java/com/firebase/ui/auth/ui/ChooseAccountActivity.java
@@ -26,7 +26,7 @@
import com.firebase.ui.auth.AuthUI.IdpConfig;
import com.firebase.ui.auth.BuildConfig;
import com.firebase.ui.auth.ui.idp.AuthMethodPickerActivity;
-import com.firebase.ui.auth.ui.idp.IDPSignInContainerActivity;
+import com.firebase.ui.auth.ui.idp.IdpSignInContainerActivity;
import com.firebase.ui.auth.util.CredentialsAPI;
import com.firebase.ui.auth.util.CredentialsApiHelper;
import com.firebase.ui.auth.util.EmailFlowUtil;
@@ -242,7 +242,7 @@ public void onActivityResult(int requestCode, int resultCode, Intent data) {
case RC_IDP_SIGNIN:
case RC_AUTH_METHOD_PICKER:
case RC_EMAIL_FLOW:
- finish(resultCode, new Intent());
+ finish(resultCode, data);
break;
case RC_PLAY_SERVICES:
if (resultCode != RESULT_OK) {
@@ -313,21 +313,21 @@ protected void redirectToIdpSignIn(String email, String accountType) {
Intent nextIntent;
switch (accountType) {
case IdentityProviders.GOOGLE:
- nextIntent = IDPSignInContainerActivity.createIntent(
+ nextIntent = IdpSignInContainerActivity.createIntent(
this,
mActivityHelper.getFlowParams(),
GoogleAuthProvider.PROVIDER_ID,
email);
break;
case IdentityProviders.FACEBOOK:
- nextIntent = IDPSignInContainerActivity.createIntent(
+ nextIntent = IdpSignInContainerActivity.createIntent(
this,
mActivityHelper.getFlowParams(),
FacebookAuthProvider.PROVIDER_ID,
email);
break;
case IdentityProviders.TWITTER:
- nextIntent = IDPSignInContainerActivity.createIntent(
+ nextIntent = IdpSignInContainerActivity.createIntent(
this,
mActivityHelper.getFlowParams(),
TwitterAuthProvider.PROVIDER_ID,
diff --git a/auth/src/main/java/com/firebase/ui/auth/ui/ExtraConstants.java b/auth/src/main/java/com/firebase/ui/auth/ui/ExtraConstants.java
index c854730f9..9b919290a 100644
--- a/auth/src/main/java/com/firebase/ui/auth/ui/ExtraConstants.java
+++ b/auth/src/main/java/com/firebase/ui/auth/ui/ExtraConstants.java
@@ -26,5 +26,4 @@ public class ExtraConstants {
public static final String EXTRA_PASSWORD = "extra_password";
public static final String EXTRA_PROFILE_PICTURE_URI = "extra_profile_picture_uri";
public static final String EXTRA_PROVIDER = "extra_provider";
- public static final String EXTRA_SUCCESS = "success_extra";
}
diff --git a/auth/src/main/java/com/firebase/ui/auth/ui/account_link/SaveCredentialsActivity.java b/auth/src/main/java/com/firebase/ui/auth/ui/account_link/SaveCredentialsActivity.java
index 86a688eaa..01c8f9e7b 100644
--- a/auth/src/main/java/com/firebase/ui/auth/ui/account_link/SaveCredentialsActivity.java
+++ b/auth/src/main/java/com/firebase/ui/auth/ui/account_link/SaveCredentialsActivity.java
@@ -26,6 +26,7 @@
import com.firebase.ui.auth.BuildConfig;
import com.firebase.ui.auth.R;
+import com.firebase.ui.auth.IdpResponse;
import com.firebase.ui.auth.ui.ActivityHelper;
import com.firebase.ui.auth.ui.AppCompatBase;
import com.firebase.ui.auth.ui.ExtraConstants;
@@ -54,7 +55,7 @@ public class SaveCredentialsActivity extends AppCompatBase
private String mName;
private String mEmail;
private String mPassword;
- private String mProvider;
+ private IdpResponse mIdpResponse;
private String mProfilePictureUri;
private GoogleApiClient mCredentialsApiClient;
@@ -72,7 +73,7 @@ protected void onCreate(Bundle savedInstanceState) {
mName = getIntent().getStringExtra(ExtraConstants.EXTRA_NAME);
mEmail = getIntent().getStringExtra(ExtraConstants.EXTRA_EMAIL);
mPassword = getIntent().getStringExtra(ExtraConstants.EXTRA_PASSWORD);
- mProvider = getIntent().getStringExtra(ExtraConstants.EXTRA_PROVIDER);
+ mIdpResponse = getIntent().getParcelableExtra(ExtraConstants.EXTRA_IDP_RESPONSE);
mProfilePictureUri = getIntent()
.getStringExtra(ExtraConstants.EXTRA_PROFILE_PICTURE_URI);
@@ -95,14 +96,15 @@ public void onConnected(@Nullable Bundle bundle) {
builder.setPassword(mPassword);
if (mPassword == null) {
// only password OR provider can be set, not both
- if (mProvider != null) {
+ String provider = mIdpResponse.getProviderType();
+ if (provider != null) {
String translatedProvider = null;
// translate the google.com/facebook.com provider strings into full URIs
- if (mProvider.equals(GoogleAuthProvider.PROVIDER_ID)) {
+ if (provider.equals(GoogleAuthProvider.PROVIDER_ID)) {
translatedProvider = IdentityProviders.GOOGLE;
- } else if (mProvider.equals(FacebookAuthProvider.PROVIDER_ID)) {
+ } else if (provider.equals(FacebookAuthProvider.PROVIDER_ID)) {
translatedProvider = IdentityProviders.FACEBOOK;
- } else if (mProvider.equals(TwitterAuthProvider.PROVIDER_ID)) {
+ } else if (provider.equals(TwitterAuthProvider.PROVIDER_ID)) {
translatedProvider = IdentityProviders.TWITTER;
}
@@ -204,14 +206,14 @@ public static Intent createIntent(
FlowParameters flowParams,
FirebaseUser user,
@Nullable String password,
- @Nullable String provider) {
+ @Nullable IdpResponse idpResponse) {
String photoUrl = user.getPhotoUrl() != null ? user.getPhotoUrl().toString() : null;
return ActivityHelper.createBaseIntent(context, SaveCredentialsActivity.class, flowParams)
.putExtra(ExtraConstants.EXTRA_NAME, user.getDisplayName())
.putExtra(ExtraConstants.EXTRA_EMAIL, user.getEmail())
.putExtra(ExtraConstants.EXTRA_PASSWORD, password)
- .putExtra(ExtraConstants.EXTRA_PROVIDER, provider)
+ .putExtra(ExtraConstants.EXTRA_IDP_RESPONSE, idpResponse)
.putExtra(ExtraConstants.EXTRA_PROFILE_PICTURE_URI, photoUrl);
}
}
diff --git a/auth/src/main/java/com/firebase/ui/auth/ui/account_link/WelcomeBackIDPPrompt.java b/auth/src/main/java/com/firebase/ui/auth/ui/account_link/WelcomeBackIdpPrompt.java
similarity index 87%
rename from auth/src/main/java/com/firebase/ui/auth/ui/account_link/WelcomeBackIDPPrompt.java
rename to auth/src/main/java/com/firebase/ui/auth/ui/account_link/WelcomeBackIdpPrompt.java
index 8bebe5a5c..30f1d4eee 100644
--- a/auth/src/main/java/com/firebase/ui/auth/ui/account_link/WelcomeBackIDPPrompt.java
+++ b/auth/src/main/java/com/firebase/ui/auth/ui/account_link/WelcomeBackIdpPrompt.java
@@ -28,8 +28,9 @@
import com.firebase.ui.auth.R;
import com.firebase.ui.auth.provider.FacebookProvider;
import com.firebase.ui.auth.provider.GoogleProvider;
-import com.firebase.ui.auth.provider.IDPProvider;
-import com.firebase.ui.auth.provider.IDPResponse;
+import com.firebase.ui.auth.provider.IdpProvider;
+import com.firebase.ui.auth.provider.IdpProvider.IdpCallback;
+import com.firebase.ui.auth.IdpResponse;
import com.firebase.ui.auth.ui.ActivityHelper;
import com.firebase.ui.auth.ui.AppCompatBase;
import com.firebase.ui.auth.ui.AuthCredentialHelper;
@@ -45,13 +46,13 @@
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.auth.GoogleAuthProvider;
-public class WelcomeBackIDPPrompt extends AppCompatBase
- implements View.OnClickListener, IDPProvider.IDPCallback {
+public class WelcomeBackIdpPrompt extends AppCompatBase
+ implements View.OnClickListener, IdpCallback {
private static final String TAG = "WelcomeBackIDPPrompt";
- private IDPProvider mIdpProvider;
+ private IdpProvider mIdpProvider;
private String mProviderId;
- private IDPResponse mPrevIdpResponse;
+ private IdpResponse mPrevIdpResponse;
private AuthCredential mPrevCredential;
@@ -60,8 +61,6 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mProviderId = getProviderIdFromIntent();
mPrevIdpResponse = getIntent().getParcelableExtra(ExtraConstants.EXTRA_IDP_RESPONSE);
- FlowParameters flowParameters =
- getIntent().getParcelableExtra(ExtraConstants.EXTRA_FLOW_PARAMS);
setContentView(R.layout.welcome_back_idp_prompt_layout);
mIdpProvider = null;
@@ -102,7 +101,7 @@ protected void onCreate(Bundle savedInstanceState) {
@Override
public void onClick(View view) {
mActivityHelper.showLoadingDialog(R.string.progress_dialog_signing_in);
- mIdpProvider.startLogin(WelcomeBackIDPPrompt.this);
+ mIdpProvider.startLogin(WelcomeBackIdpPrompt.this);
}
});
}
@@ -124,7 +123,7 @@ public void onClick(View view) {
}
@Override
- public void onSuccess(IDPResponse idpResponse) {
+ public void onSuccess(IdpResponse idpResponse) {
next(idpResponse);
}
@@ -142,7 +141,7 @@ private String getEmailFromIntent() {
return getIntent().getStringExtra(ExtraConstants.EXTRA_EMAIL);
}
- private void next(IDPResponse newIdpResponse) {
+ private void next(final IdpResponse newIdpResponse) {
if (newIdpResponse == null) {
return; // do nothing
}
@@ -170,10 +169,11 @@ public void onComplete(@NonNull Task task) {
.signInWithCredential(mPrevCredential)
.addOnFailureListener(new TaskFailureLogger(
TAG, "Error signing in with previous credential"))
- .addOnCompleteListener(new FinishListener());
+ .addOnCompleteListener(new FinishListener(newIdpResponse));
} else {
mActivityHelper.dismissDialog();
- finish(Activity.RESULT_OK, new Intent());
+ finish(Activity.RESULT_OK, new Intent().putExtra(
+ ExtraConstants.EXTRA_IDP_RESPONSE, newIdpResponse));
}
}
}).addOnFailureListener(
@@ -184,7 +184,7 @@ public void onComplete(@NonNull Task task) {
authResultTask
.addOnFailureListener(
new TaskFailureLogger(TAG, "Error linking with credential"))
- .addOnCompleteListener(new FinishListener());
+ .addOnCompleteListener(new FinishListener(newIdpResponse));
}
}
@@ -192,19 +192,24 @@ public static Intent createIntent(
Context context,
FlowParameters flowParams,
String providerId,
- IDPResponse idpResponse,
+ IdpResponse idpResponse,
String email) {
- return ActivityHelper.createBaseIntent(context, WelcomeBackIDPPrompt.class, flowParams)
+ return ActivityHelper.createBaseIntent(context, WelcomeBackIdpPrompt.class, flowParams)
.putExtra(ExtraConstants.EXTRA_PROVIDER, providerId)
.putExtra(ExtraConstants.EXTRA_IDP_RESPONSE, idpResponse)
.putExtra(ExtraConstants.EXTRA_EMAIL, email);
}
private class FinishListener implements OnCompleteListener {
- @Override
+ private final IdpResponse mIdpResponse;
+
+ FinishListener(IdpResponse idpResponse) {
+ mIdpResponse = idpResponse;
+ }
public void onComplete(@NonNull Task task) {
mActivityHelper.dismissDialog();
- finish(Activity.RESULT_OK, new Intent());
+ finish(Activity.RESULT_OK,
+ new Intent().putExtra(ExtraConstants.EXTRA_IDP_RESPONSE, mIdpResponse));
}
}
}
diff --git a/auth/src/main/java/com/firebase/ui/auth/ui/account_link/WelcomeBackPasswordPrompt.java b/auth/src/main/java/com/firebase/ui/auth/ui/account_link/WelcomeBackPasswordPrompt.java
index e8683ab2d..3d07f231a 100644
--- a/auth/src/main/java/com/firebase/ui/auth/ui/account_link/WelcomeBackPasswordPrompt.java
+++ b/auth/src/main/java/com/firebase/ui/auth/ui/account_link/WelcomeBackPasswordPrompt.java
@@ -28,8 +28,8 @@
import android.widget.EditText;
import android.widget.TextView;
+import com.firebase.ui.auth.IdpResponse;
import com.firebase.ui.auth.R;
-import com.firebase.ui.auth.provider.IDPResponse;
import com.firebase.ui.auth.ui.ActivityHelper;
import com.firebase.ui.auth.ui.AppCompatBase;
import com.firebase.ui.auth.ui.AuthCredentialHelper;
@@ -58,7 +58,7 @@ public class WelcomeBackPasswordPrompt extends AppCompatBase implements View.OnC
private String mEmail;
private TextInputLayout mPasswordLayout;
private EditText mPasswordField;
- private IDPResponse mIdpResponse;
+ private IdpResponse mIdpResponse;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -172,7 +172,7 @@ public void onFailure(@NonNull Exception e) {
public static Intent createIntent(
Context context,
FlowParameters flowParams,
- IDPResponse response) {
+ IdpResponse response) {
return ActivityHelper.createBaseIntent(context, WelcomeBackPasswordPrompt.class, flowParams)
.putExtra(ExtraConstants.EXTRA_IDP_RESPONSE, response);
}
diff --git a/auth/src/main/java/com/firebase/ui/auth/ui/email/EmailHintContainerActivity.java b/auth/src/main/java/com/firebase/ui/auth/ui/email/EmailHintContainerActivity.java
index c30d13d9c..94b95344c 100644
--- a/auth/src/main/java/com/firebase/ui/auth/ui/email/EmailHintContainerActivity.java
+++ b/auth/src/main/java/com/firebase/ui/auth/ui/email/EmailHintContainerActivity.java
@@ -49,7 +49,6 @@ protected void onCreate(Bundle savedInstanceState) {
}
}
finish(RESULT_CANCELED, new Intent());
- return;
}
@Override
diff --git a/auth/src/main/java/com/firebase/ui/auth/ui/idp/AuthMethodPickerActivity.java b/auth/src/main/java/com/firebase/ui/auth/ui/idp/AuthMethodPickerActivity.java
index 37cbd97eb..d53a69c66 100644
--- a/auth/src/main/java/com/firebase/ui/auth/ui/idp/AuthMethodPickerActivity.java
+++ b/auth/src/main/java/com/firebase/ui/auth/ui/idp/AuthMethodPickerActivity.java
@@ -28,8 +28,9 @@
import com.firebase.ui.auth.R;
import com.firebase.ui.auth.provider.FacebookProvider;
import com.firebase.ui.auth.provider.GoogleProvider;
-import com.firebase.ui.auth.provider.IDPProvider;
-import com.firebase.ui.auth.provider.IDPResponse;
+import com.firebase.ui.auth.provider.IdpProvider;
+import com.firebase.ui.auth.provider.IdpProvider.IdpCallback;
+import com.firebase.ui.auth.IdpResponse;
import com.firebase.ui.auth.provider.TwitterProvider;
import com.firebase.ui.auth.ui.ActivityHelper;
import com.firebase.ui.auth.ui.FlowParameters;
@@ -47,7 +48,7 @@
/**
* Presents the list of authentication options for this app to the user. If an
- * identity provider option is selected, a {@link IDPSignInContainerActivity container activity}
+ * identity provider option is selected, a {@link IdpSignInContainerActivity container activity}
* is launched to manage the IDP-specific sign-in flow. If email authentication is chosen,
* the {@link EmailHintContainerActivity root email flow activity} is started.
*
@@ -57,13 +58,13 @@
*/
public class AuthMethodPickerActivity
extends IDPBaseActivity
- implements IDPProvider.IDPCallback, View.OnClickListener {
+ implements IdpCallback, View.OnClickListener {
private static final int RC_EMAIL_FLOW = 2;
private static final int RC_ACCOUNT_LINK = 3;
private static final int RC_SAVE_CREDENTIAL = 4;
private static final String TAG = "AuthMethodPicker";
- private ArrayList mIdpProviders;
+ private ArrayList mIdpProviders;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -108,7 +109,7 @@ private void populateIdpList(List providers) {
}
LinearLayout btnHolder = (LinearLayout) findViewById(R.id.btn_holder);
- for (final IDPProvider provider: mIdpProviders) {
+ for (final IdpProvider provider: mIdpProviders) {
View loginButton = null;
switch (provider.getProviderId()) {
case GoogleAuthProvider.PROVIDER_ID:
@@ -145,21 +146,21 @@ public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RC_EMAIL_FLOW) {
if (resultCode == RESULT_OK) {
- finish(RESULT_OK, new Intent());
+ finish(RESULT_OK, data);
}
} else if (requestCode == RC_SAVE_CREDENTIAL) {
- finish(RESULT_OK, new Intent());
+ finish(RESULT_OK, data);
} else if (requestCode == RC_ACCOUNT_LINK) {
- finish(resultCode, new Intent());
+ finish(resultCode, data);
} else {
- for(IDPProvider provider : mIdpProviders) {
+ for(IdpProvider provider : mIdpProviders) {
provider.onActivityResult(requestCode, resultCode, data);
}
}
}
@Override
- public void onSuccess(final IDPResponse response) {
+ public void onSuccess(final IdpResponse response) {
AuthCredential credential = createCredential(response);
final FirebaseAuth firebaseAuth = mActivityHelper.getFirebaseAuth();
@@ -195,7 +196,7 @@ public void onClick(View view) {
protected void onDestroy() {
super.onDestroy();
if (mIdpProviders != null) {
- for (final IDPProvider provider : mIdpProviders) {
+ for (final IdpProvider provider : mIdpProviders) {
if (provider instanceof GoogleProvider) {
((GoogleProvider) provider).disconnect();
}
diff --git a/auth/src/main/java/com/firebase/ui/auth/ui/idp/CredentialSignInHandler.java b/auth/src/main/java/com/firebase/ui/auth/ui/idp/CredentialSignInHandler.java
index 8800a73ab..3de29302a 100644
--- a/auth/src/main/java/com/firebase/ui/auth/ui/idp/CredentialSignInHandler.java
+++ b/auth/src/main/java/com/firebase/ui/auth/ui/idp/CredentialSignInHandler.java
@@ -18,10 +18,10 @@
import android.support.annotation.NonNull;
import android.util.Log;
-import com.firebase.ui.auth.provider.IDPResponse;
+import com.firebase.ui.auth.IdpResponse;
import com.firebase.ui.auth.ui.ActivityHelper;
import com.firebase.ui.auth.ui.TaskFailureLogger;
-import com.firebase.ui.auth.ui.account_link.WelcomeBackIDPPrompt;
+import com.firebase.ui.auth.ui.account_link.WelcomeBackIdpPrompt;
import com.firebase.ui.auth.ui.account_link.WelcomeBackPasswordPrompt;
import com.firebase.ui.auth.util.SmartlockUtil;
import com.google.android.gms.tasks.OnCompleteListener;
@@ -41,14 +41,14 @@ public class CredentialSignInHandler implements OnCompleteListener {
private int mSaveCredentialsResultCode;
private Activity mActivity;
private ActivityHelper mActivityHelper;
- private IDPResponse mResponse;
+ private IdpResponse mResponse;
public CredentialSignInHandler(
Activity activity,
ActivityHelper activityHelper,
int accountLinkResultCode,
int saveCredentialsResultCode,
- IDPResponse response) {
+ IdpResponse response) {
mActivity = activity;
mAccountLinkResultCode = accountLinkResultCode;
mSaveCredentialsResultCode = saveCredentialsResultCode;
@@ -85,7 +85,7 @@ public void onFailure(@NonNull Exception e) {
FirebaseUser firebaseUser = task.getResult().getUser();
SmartlockUtil.saveCredentialOrFinish(mActivity, mSaveCredentialsResultCode,
mActivityHelper.getFlowParams(), firebaseUser,
- null /* password */, mResponse.getProviderType());
+ null /* password */, mResponse);
}
}
@@ -113,7 +113,7 @@ public void onSuccess(@NonNull ProviderQueryResult result) {
} else {
// Start IDP welcome back flow
mActivity.startActivityForResult(
- WelcomeBackIDPPrompt.createIntent(
+ WelcomeBackIdpPrompt.createIntent(
mActivityHelper.getApplicationContext(),
mActivityHelper.getFlowParams(),
result.getProviders().get(0),
diff --git a/auth/src/main/java/com/firebase/ui/auth/ui/idp/IDPBaseActivity.java b/auth/src/main/java/com/firebase/ui/auth/ui/idp/IDPBaseActivity.java
index 5c0927726..dcfc87ae1 100644
--- a/auth/src/main/java/com/firebase/ui/auth/ui/idp/IDPBaseActivity.java
+++ b/auth/src/main/java/com/firebase/ui/auth/ui/idp/IDPBaseActivity.java
@@ -16,7 +16,7 @@
import com.firebase.ui.auth.provider.FacebookProvider;
import com.firebase.ui.auth.provider.GoogleProvider;
-import com.firebase.ui.auth.provider.IDPResponse;
+import com.firebase.ui.auth.IdpResponse;
import com.firebase.ui.auth.provider.TwitterProvider;
import com.firebase.ui.auth.ui.AppCompatBase;
import com.google.firebase.auth.AuthCredential;
@@ -25,7 +25,7 @@
import com.google.firebase.auth.TwitterAuthProvider;
public class IDPBaseActivity extends AppCompatBase {
- protected AuthCredential createCredential(IDPResponse idpSignInResponse) {
+ protected AuthCredential createCredential(IdpResponse idpSignInResponse) {
if (idpSignInResponse.getProviderType().equalsIgnoreCase(FacebookAuthProvider.PROVIDER_ID)) {
return FacebookProvider.createAuthCredential(idpSignInResponse);
} else if (idpSignInResponse.getProviderType().equalsIgnoreCase(GoogleAuthProvider
diff --git a/auth/src/main/java/com/firebase/ui/auth/ui/idp/IDPSignInContainerActivity.java b/auth/src/main/java/com/firebase/ui/auth/ui/idp/IdpSignInContainerActivity.java
similarity index 89%
rename from auth/src/main/java/com/firebase/ui/auth/ui/idp/IDPSignInContainerActivity.java
rename to auth/src/main/java/com/firebase/ui/auth/ui/idp/IdpSignInContainerActivity.java
index 62fafda75..32225191c 100644
--- a/auth/src/main/java/com/firebase/ui/auth/ui/idp/IDPSignInContainerActivity.java
+++ b/auth/src/main/java/com/firebase/ui/auth/ui/idp/IdpSignInContainerActivity.java
@@ -17,12 +17,12 @@
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
-
import com.firebase.ui.auth.AuthUI.IdpConfig;
+import com.firebase.ui.auth.IdpResponse;
import com.firebase.ui.auth.provider.FacebookProvider;
import com.firebase.ui.auth.provider.GoogleProvider;
-import com.firebase.ui.auth.provider.IDPProvider;
-import com.firebase.ui.auth.provider.IDPResponse;
+import com.firebase.ui.auth.provider.IdpProvider;
+import com.firebase.ui.auth.provider.IdpProvider.IdpCallback;
import com.firebase.ui.auth.provider.TwitterProvider;
import com.firebase.ui.auth.ui.ActivityHelper;
import com.firebase.ui.auth.ui.ExtraConstants;
@@ -33,14 +33,14 @@
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FacebookAuthProvider;
import com.google.firebase.auth.FirebaseAuth;
-import com.google.firebase.auth.GoogleAuthProvider;
import com.google.firebase.auth.TwitterAuthProvider;
+import com.google.firebase.auth.GoogleAuthProvider;
-public class IDPSignInContainerActivity extends IDPBaseActivity implements IDPProvider.IDPCallback {
+public class IdpSignInContainerActivity extends IDPBaseActivity implements IdpCallback {
private static final String TAG = "IDPSignInContainer";
private static final int RC_WELCOME_BACK_IDP = 4;
private static final int RC_SAVE_CREDENTIALS = 5;
- private IDPProvider mIDPProvider;
+ private IdpProvider mIDPProvider;
private String mProvider;
private String mEmail;
@@ -73,7 +73,7 @@ protected void onCreate(Bundle savedInstanceState) {
}
@Override
- public void onSuccess(final IDPResponse response) {
+ public void onSuccess(final IdpResponse response) {
Intent data = new Intent();
data.putExtra(ExtraConstants.EXTRA_IDP_RESPONSE, response);
AuthCredential credential = createCredential(response);
@@ -83,7 +83,7 @@ public void onSuccess(final IDPResponse response) {
.addOnFailureListener(
new TaskFailureLogger(TAG, "Failure authenticating with credential"))
.addOnCompleteListener(new CredentialSignInHandler(
- IDPSignInContainerActivity.this,
+ IdpSignInContainerActivity.this,
mActivityHelper,
RC_WELCOME_BACK_IDP,
RC_SAVE_CREDENTIALS,
@@ -99,9 +99,9 @@ public void onFailure(Bundle extra) {
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RC_WELCOME_BACK_IDP) {
- finish(resultCode, new Intent());
+ finish(resultCode, data);
} else if (requestCode == RC_SAVE_CREDENTIALS) {
- finish(RESULT_OK, new Intent());
+ finish(RESULT_OK, data);
} else {
mIDPProvider.onActivityResult(requestCode, resultCode, data);
}
@@ -114,7 +114,7 @@ public static Intent createIntent(
String email) {
return ActivityHelper.createBaseIntent(
context,
- IDPSignInContainerActivity.class,
+ IdpSignInContainerActivity.class,
flowParams)
.putExtra(ExtraConstants.EXTRA_PROVIDER, provider)
.putExtra(ExtraConstants.EXTRA_EMAIL, email);
diff --git a/auth/src/main/java/com/firebase/ui/auth/util/SmartlockUtil.java b/auth/src/main/java/com/firebase/ui/auth/util/SmartlockUtil.java
index c67a9d815..78eb55677 100644
--- a/auth/src/main/java/com/firebase/ui/auth/util/SmartlockUtil.java
+++ b/auth/src/main/java/com/firebase/ui/auth/util/SmartlockUtil.java
@@ -7,6 +7,8 @@
import android.text.TextUtils;
import android.util.Log;
+import com.firebase.ui.auth.IdpResponse;
+import com.firebase.ui.auth.ui.ExtraConstants;
import com.firebase.ui.auth.ui.FlowParameters;
import com.firebase.ui.auth.ui.account_link.SaveCredentialsActivity;
import com.google.android.gms.auth.api.credentials.Credential;
@@ -37,30 +39,30 @@ public class SmartlockUtil {
* @param parameters calling Activity flow parameters.
* @param firebaseUser Firebase user to save in Credential.
* @param password (optional) password for email credential.
- * @param provider (optional) provider string for provider credential.
+ * @param idpResponse (optional) response from signing in with a credential.
*/
public static void saveCredentialOrFinish(Activity activity,
int requestCode,
FlowParameters parameters,
FirebaseUser firebaseUser,
@Nullable String password,
- @Nullable String provider) {
+ @Nullable IdpResponse idpResponse) {
// If SmartLock is disabled, finish the Activity
if (!parameters.smartLockEnabled) {
- finishActivity(activity);
+ finishActivity(activity, idpResponse);
return;
}
// If Play Services is not available, finish the Activity
if(!PlayServicesHelper.getInstance(activity).isPlayServicesAvailable()) {
- finishActivity(activity);
+ finishActivity(activity, idpResponse);
return;
}
// Launch save activity
Intent saveCredentialIntent = SaveCredentialsActivity.createIntent(activity, parameters,
- firebaseUser, password, provider);
+ firebaseUser, password, idpResponse);
activity.startActivityForResult(saveCredentialIntent, requestCode);
}
@@ -118,8 +120,10 @@ public static List credentialsFromFirebaseUser(@NonNull FirebaseUser
return credentials;
}
- private static void finishActivity(Activity activity) {
- activity.setResult(Activity.RESULT_OK, new Intent());
+ private static void finishActivity(Activity activity, IdpResponse idpResponse) {
+ activity.setResult(
+ Activity.RESULT_OK,
+ new Intent().putExtra(ExtraConstants.EXTRA_IDP_RESPONSE, idpResponse));
activity.finish();
}
diff --git a/auth/src/test/java/com/firebase/ui/auth/test_helpers/FacebookProviderShadow.java b/auth/src/test/java/com/firebase/ui/auth/test_helpers/FacebookProviderShadow.java
index f5779158a..b6e5d980c 100644
--- a/auth/src/test/java/com/firebase/ui/auth/test_helpers/FacebookProviderShadow.java
+++ b/auth/src/test/java/com/firebase/ui/auth/test_helpers/FacebookProviderShadow.java
@@ -15,12 +15,11 @@
package com.firebase.ui.auth.test_helpers;
import android.app.Activity;
-import android.os.Bundle;
import com.facebook.login.LoginResult;
import com.firebase.ui.auth.provider.FacebookProvider;
-import com.firebase.ui.auth.provider.IDPProvider;
-import com.firebase.ui.auth.provider.IDPResponse;
+import com.firebase.ui.auth.provider.IdpProvider.IdpCallback;
+import com.firebase.ui.auth.IdpResponse;
import com.google.firebase.auth.FacebookAuthProvider;
import java.util.List;
@@ -34,27 +33,21 @@
@Implements(FacebookProvider.class)
public class FacebookProviderShadow {
private static final String FAKE_ACCESS_TOKEN = "fake_access_token";
- private IDPResponse mMockIdpResponse;
- private Bundle mMockIdpResponseBundle;
- private IDPProvider.IDPCallback mCallback;
+ private IdpResponse mMockIdpResponse;
+ private IdpCallback mCallback;
public FacebookProviderShadow() {
- if(mMockIdpResponseBundle == null) {
- mMockIdpResponseBundle = mock(Bundle.class);
- }
if (mMockIdpResponse == null) {
- mMockIdpResponse = mock(IDPResponse.class);
+ mMockIdpResponse = mock(IdpResponse.class);
when(mMockIdpResponse.getProviderType()).thenReturn(FacebookAuthProvider.PROVIDER_ID);
- when(mMockIdpResponse.getResponse()).thenReturn(mMockIdpResponseBundle);
- when(mMockIdpResponseBundle
- .getString(FacebookProvider.ACCESS_TOKEN)).thenReturn(FAKE_ACCESS_TOKEN);
+ when(mMockIdpResponse.getIdpToken()).thenReturn(FAKE_ACCESS_TOKEN);
}
}
public void __constructor__(Activity activity, List scopes) {}
@Implementation
- public void setAuthenticationCallback(IDPProvider.IDPCallback idpCallback) {
+ public void setAuthenticationCallback(IdpCallback idpCallback) {
mCallback = idpCallback;
}
diff --git a/auth/src/test/java/com/firebase/ui/auth/test_helpers/GoogleProviderShadow.java b/auth/src/test/java/com/firebase/ui/auth/test_helpers/GoogleProviderShadow.java
index 961924b25..d46887206 100644
--- a/auth/src/test/java/com/firebase/ui/auth/test_helpers/GoogleProviderShadow.java
+++ b/auth/src/test/java/com/firebase/ui/auth/test_helpers/GoogleProviderShadow.java
@@ -15,12 +15,11 @@
package com.firebase.ui.auth.test_helpers;
import android.app.Activity;
-import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import com.firebase.ui.auth.provider.GoogleProvider;
-import com.firebase.ui.auth.provider.IDPProvider;
-import com.firebase.ui.auth.provider.IDPResponse;
+import com.firebase.ui.auth.provider.IdpProvider.IdpCallback;
+import com.firebase.ui.auth.IdpResponse;
import com.google.firebase.auth.GoogleAuthProvider;
import java.util.List;
@@ -34,27 +33,21 @@
@Implements(GoogleProvider.class)
public class GoogleProviderShadow {
private static final String FAKE_TOKEN = "fake_token";
- private IDPResponse mMockIdpResponse;
- private Bundle mMockIdpResponseBundle;
- private IDPProvider.IDPCallback mCallback;
+ private IdpResponse mMockIdpResponse;
+ private IdpCallback mCallback;
public GoogleProviderShadow() {
- if(mMockIdpResponseBundle == null) {
- mMockIdpResponseBundle = mock(Bundle.class);
- }
if (mMockIdpResponse == null) {
- mMockIdpResponse = mock(IDPResponse.class);
+ mMockIdpResponse = mock(IdpResponse.class);
when(mMockIdpResponse.getProviderType()).thenReturn(GoogleAuthProvider.PROVIDER_ID);
- when(mMockIdpResponse.getResponse()).thenReturn(mMockIdpResponseBundle);
- when(mMockIdpResponseBundle
- .getString(GoogleProvider.TOKEN_KEY)).thenReturn(FAKE_TOKEN);
+ when(mMockIdpResponse.getIdpToken()).thenReturn(FAKE_TOKEN);
}
}
public void __constructor__(FragmentActivity activity, String email, List scopes) {}
@Implementation
- public void setAuthenticationCallback(IDPProvider.IDPCallback idpCallback) {
+ public void setAuthenticationCallback(IdpCallback idpCallback) {
mCallback = idpCallback;
}
diff --git a/auth/src/test/java/com/firebase/ui/auth/ui/ChooseAccountActivityTest.java b/auth/src/test/java/com/firebase/ui/auth/ui/ChooseAccountActivityTest.java
index 589fc4091..acff63d63 100644
--- a/auth/src/test/java/com/firebase/ui/auth/ui/ChooseAccountActivityTest.java
+++ b/auth/src/test/java/com/firebase/ui/auth/ui/ChooseAccountActivityTest.java
@@ -24,7 +24,7 @@
import com.firebase.ui.auth.test_helpers.FakeAuthResult;
import com.firebase.ui.auth.test_helpers.TestConstants;
import com.firebase.ui.auth.test_helpers.TestHelper;
-import com.firebase.ui.auth.ui.idp.IDPSignInContainerActivity;
+import com.firebase.ui.auth.ui.idp.IdpSignInContainerActivity;
import com.firebase.ui.auth.util.CredentialsAPI;
import com.firebase.ui.auth.util.PlayServicesHelper;
import com.google.android.gms.auth.api.credentials.IdentityProviders;
@@ -136,7 +136,7 @@ public void testAutoSignInWithSavedIdp_redirectsToIdpSignIn() {
.getNextStartedActivityForResult();
assertEquals(
- IDPSignInContainerActivity.class.getName(),
+ IdpSignInContainerActivity.class.getName(),
nextIntent.intent.getComponent().getClassName()
);
assertEquals(
diff --git a/auth/src/test/java/com/firebase/ui/auth/ui/idp/AuthMethodPickerActivityTest.java b/auth/src/test/java/com/firebase/ui/auth/ui/idp/AuthMethodPickerActivityTest.java
index adfe63ea2..287572380 100644
--- a/auth/src/test/java/com/firebase/ui/auth/ui/idp/AuthMethodPickerActivityTest.java
+++ b/auth/src/test/java/com/firebase/ui/auth/ui/idp/AuthMethodPickerActivityTest.java
@@ -21,6 +21,7 @@
import com.firebase.ui.auth.AuthUI;
import com.firebase.ui.auth.BuildConfig;
+import com.firebase.ui.auth.IdpResponse;
import com.firebase.ui.auth.R;
import com.firebase.ui.auth.test_helpers.ActivityHelperShadow;
import com.firebase.ui.auth.test_helpers.AutoCompleteTask;
@@ -222,7 +223,10 @@ private static void verifySaveCredentialIntent(
nextIntent.intent.getExtras().getString(ExtraConstants.EXTRA_PROFILE_PICTURE_URI),
TestConstants.PHOTO_URL);
assertEquals(
- nextIntent.intent.getExtras().getString(ExtraConstants.EXTRA_PROVIDER),
+ ((IdpResponse) nextIntent
+ .intent
+ .getExtras()
+ .getParcelable(ExtraConstants.EXTRA_IDP_RESPONSE)).getProviderType(),
provider);
assertEquals(
nextIntent.intent.getExtras().getString(ExtraConstants.EXTRA_PASSWORD),
diff --git a/auth/src/test/java/com/firebase/ui/auth/ui/idp/CredentialSignInHandlerTest.java b/auth/src/test/java/com/firebase/ui/auth/ui/idp/CredentialSignInHandlerTest.java
index 75712a006..6e90ae9e9 100644
--- a/auth/src/test/java/com/firebase/ui/auth/ui/idp/CredentialSignInHandlerTest.java
+++ b/auth/src/test/java/com/firebase/ui/auth/ui/idp/CredentialSignInHandlerTest.java
@@ -17,11 +17,10 @@
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
-import android.os.Bundle;
import com.firebase.ui.auth.AuthUI;
import com.firebase.ui.auth.BuildConfig;
-import com.firebase.ui.auth.provider.IDPResponse;
+import com.firebase.ui.auth.IdpResponse;
import com.firebase.ui.auth.test_helpers.ActivityHelperShadow;
import com.firebase.ui.auth.test_helpers.AutoCompleteTask;
import com.firebase.ui.auth.test_helpers.CustomRobolectricGradleTestRunner;
@@ -33,7 +32,7 @@
import com.firebase.ui.auth.ui.ExtraConstants;
import com.firebase.ui.auth.ui.FlowParameters;
import com.firebase.ui.auth.ui.account_link.SaveCredentialsActivity;
-import com.firebase.ui.auth.ui.account_link.WelcomeBackIDPPrompt;
+import com.firebase.ui.auth.ui.account_link.WelcomeBackIdpPrompt;
import com.firebase.ui.auth.ui.account_link.WelcomeBackPasswordPrompt;
import com.firebase.ui.auth.util.CredentialsAPI;
import com.firebase.ui.auth.util.PlayServicesHelper;
@@ -92,10 +91,9 @@ public void testSignInSucceeded() {
Activity mockActivity = mock(Activity.class);
ActivityHelper mockActivityHelper = mock(ActivityHelper.class);
FirebaseUser mockFirebaseUser = TestHelper.makeMockFirebaseUser();
- IDPResponse idpResponse = new IDPResponse(
+ IdpResponse idpResponse = new IdpResponse(
GoogleAuthProvider.PROVIDER_ID,
- TestConstants.EMAIL,
- new Bundle());
+ TestConstants.EMAIL);
CredentialSignInHandler credentialSignInHandler = new CredentialSignInHandler(
mockActivity,
mockActivityHelper,
@@ -139,10 +137,9 @@ public void testSignInFailed_withFacebookAlreadyLinked() {
Activity mockActivity = mock(Activity.class);
ActivityHelper mockActivityHelper = mock(ActivityHelper.class);
FirebaseAuth mockFirebaseAuth = mock(FirebaseAuth.class);
- IDPResponse idpResponse = new IDPResponse(
+ IdpResponse idpResponse = new IdpResponse(
GoogleAuthProvider.PROVIDER_ID,
- TestConstants.EMAIL,
- new Bundle());
+ TestConstants.EMAIL);
CredentialSignInHandler credentialSignInHandler = new CredentialSignInHandler(
mockActivity,
mockActivityHelper,
@@ -172,7 +169,7 @@ public void testSignInFailed_withFacebookAlreadyLinked() {
Intent capturedIntent = intentCaptor.getValue();
assertEquals(RC_ACCOUNT_LINK, (int) intCaptor.getValue());
assertEquals(
- WelcomeBackIDPPrompt.class.getName(),
+ WelcomeBackIdpPrompt.class.getName(),
capturedIntent.getComponent().getClassName());
assertEquals(
TestConstants.EMAIL,
@@ -189,10 +186,9 @@ public void testSignInFailed_withPasswordAccountAlreadyLinked() {
Activity mockActivity = mock(Activity.class);
ActivityHelper mockActivityHelper = mock(ActivityHelper.class);
FirebaseAuth mockFirebaseAuth = mock(FirebaseAuth.class);
- IDPResponse idpResponse = new IDPResponse(
+ IdpResponse idpResponse = new IdpResponse(
GoogleAuthProvider.PROVIDER_ID,
- TestConstants.EMAIL,
- new Bundle());
+ TestConstants.EMAIL);
CredentialSignInHandler credentialSignInHandler = new CredentialSignInHandler(
mockActivity,
mockActivityHelper,
@@ -229,7 +225,7 @@ public void testSignInFailed_withPasswordAccountAlreadyLinked() {
capturedIntent.getComponent().getClassName());
assertEquals(
TestConstants.EMAIL,
- ((IDPResponse) capturedIntent.getExtras().getParcelable(ExtraConstants
+ ((IdpResponse) capturedIntent.getExtras().getParcelable(ExtraConstants
.EXTRA_IDP_RESPONSE)).getEmail());
}
}
diff --git a/auth/src/test/java/com/firebase/ui/auth/ui/provider/TwitterProviderTest.java b/auth/src/test/java/com/firebase/ui/auth/ui/provider/TwitterProviderTest.java
index 049ca7345..1dfb71e81 100644
--- a/auth/src/test/java/com/firebase/ui/auth/ui/provider/TwitterProviderTest.java
+++ b/auth/src/test/java/com/firebase/ui/auth/ui/provider/TwitterProviderTest.java
@@ -3,8 +3,8 @@
import android.os.Bundle;
import com.firebase.ui.auth.BuildConfig;
-import com.firebase.ui.auth.provider.IDPProvider;
-import com.firebase.ui.auth.provider.IDPResponse;
+import com.firebase.ui.auth.provider.IdpProvider.IdpCallback;
+import com.firebase.ui.auth.IdpResponse;
import com.firebase.ui.auth.provider.TwitterProvider;
import com.firebase.ui.auth.test_helpers.CustomRobolectricGradleTestRunner;
import com.firebase.ui.auth.test_helpers.FacebookProviderShadow;
@@ -38,7 +38,7 @@ public class TwitterProviderTest {
private static final long FAKE_USER_ID = 555;
private static final String FAKE_USER_NAME = "testAccountName";
- private static class AssertResultCallback implements IDPProvider.IDPCallback {
+ private static class AssertResultCallback implements IdpCallback {
private CountDownLatch mCountDownLatch;
private boolean mAssertSuccess;
@@ -52,7 +52,7 @@ private void await() throws InterruptedException {
}
@Override
- public void onSuccess(IDPResponse idpResponse) {
+ public void onSuccess(IdpResponse idpResponse) {
assertTrue(mAssertSuccess);
mCountDownLatch.countDown();
}