|
30 | 30 | import com.facebook.react.bridge.WritableArray;
|
31 | 31 | import com.facebook.react.bridge.WritableMap;
|
32 | 32 | import com.google.android.gms.tasks.OnCompleteListener;
|
| 33 | +import com.google.android.gms.tasks.OnFailureListener; |
| 34 | +import com.google.android.gms.tasks.OnSuccessListener; |
| 35 | +import com.google.android.gms.tasks.Task; |
33 | 36 | import com.google.firebase.FirebaseApp;
|
34 | 37 | import com.google.firebase.FirebaseException;
|
35 | 38 | import com.google.firebase.FirebaseNetworkException;
|
@@ -203,7 +206,6 @@ public void addIdTokenListener(final String appName) {
|
203 | 206 |
|
204 | 207 | FirebaseApp firebaseApp = FirebaseApp.getInstance(appName);
|
205 | 208 | FirebaseAuth firebaseAuth = FirebaseAuth.getInstance(firebaseApp);
|
206 |
| - |
207 | 209 | if (!mIdTokenListeners.containsKey(appName)) {
|
208 | 210 | FirebaseAuth.IdTokenListener newIdTokenListener =
|
209 | 211 | firebaseAuth1 -> {
|
@@ -838,6 +840,45 @@ private void signInWithCredential(
|
838 | 840 | });
|
839 | 841 | }
|
840 | 842 | }
|
| 843 | + @ReactMethod |
| 844 | + public void signInWithProvider(String appName, String providerId, @Nullable String email, Promise promise){ |
| 845 | + OAuthProvider.Builder provider = OAuthProvider.newBuilder(providerId); |
| 846 | + if(email != null){ |
| 847 | + provider.addCustomParameter("login_hint", email); |
| 848 | + } |
| 849 | + Activity activity = getCurrentActivity(); |
| 850 | + FirebaseApp firebaseApp = FirebaseApp.getInstance(appName); |
| 851 | + FirebaseAuth firebaseAuth = FirebaseAuth.getInstance(firebaseApp); |
| 852 | + |
| 853 | + OnSuccessListener onSuccess = new OnSuccessListener<AuthResult>(){ |
| 854 | + @Override |
| 855 | + public void onSuccess(AuthResult authResult) { |
| 856 | + Log.d(TAG, "signInWithProvider:onComplete:success"); |
| 857 | + promiseWithAuthResult(authResult, promise); |
| 858 | + } |
| 859 | + }; |
| 860 | + |
| 861 | + OnFailureListener onFailure = new OnFailureListener(){ |
| 862 | + @Override |
| 863 | + public void onFailure(@NonNull Exception e) { |
| 864 | + Log.w(TAG, "signInWithProvider:onComplete:failure", e); |
| 865 | + promiseRejectAuthException(promise, e); |
| 866 | + } |
| 867 | + }; |
| 868 | + |
| 869 | + |
| 870 | + Task<AuthResult> pendingResultTask = firebaseAuth.getPendingAuthResult(); |
| 871 | + if(pendingResultTask != null){ |
| 872 | + pendingResultTask |
| 873 | + .addOnSuccessListener(onSuccess) |
| 874 | + .addOnFailureListener(onFailure); |
| 875 | + } else { |
| 876 | + firebaseAuth |
| 877 | + .startActivityForSignInWithProvider(activity, provider.build()) |
| 878 | + .addOnSuccessListener(onSuccess) |
| 879 | + .addOnFailureListener(onFailure); |
| 880 | + } |
| 881 | + } |
841 | 882 |
|
842 | 883 | /**
|
843 | 884 | * signInWithPhoneNumber
|
|
0 commit comments