@@ -187,10 +187,41 @@ public void onComplete(@NonNull Task<AuthResult> task) {
187
187
188
188
@ ReactMethod
189
189
public void reauthenticateWithCredentialForProvider (final String provider , final String authToken , final String authSecret , final Callback callback ) {
190
- // TODO:
191
- FirestackUtils .todoNote (TAG , "reauthenticateWithCredentialForProvider" , callback );
192
- // AuthCredential credential;
193
- // Log.d(TAG, "reauthenticateWithCredentialForProvider called with: " + provider);
190
+ AuthCredential credential ;
191
+
192
+ if (provider .equals ("facebook" )) {
193
+ credential = FacebookAuthProvider .getCredential (authToken );
194
+ } else if (provider .equals ("google" )) {
195
+ credential = GoogleAuthProvider .getCredential (authToken , null );
196
+ } else {
197
+ // TODO:
198
+ FirestackUtils .todoNote (TAG , "reauthenticateWithCredentialForProvider" , callback );
199
+ // AuthCredential credential;
200
+ // Log.d(TAG, "reauthenticateWithCredentialForProvider called with: " + provider);
201
+ return ;
202
+ }
203
+
204
+ FirebaseUser user = FirebaseAuth .getInstance ().getCurrentUser ();
205
+ if (user != null ) {
206
+ user .reauthenticate (credential )
207
+ .addOnCompleteListener (new OnCompleteListener <Void >() {
208
+ @ Override
209
+ public void onComplete (@ NonNull Task <Void > task ) {
210
+ if (task .isSuccessful ()) {
211
+ Log .d (TAG , "User re-authenticated with " + provider );
212
+ FirebaseUser u = FirebaseAuth .getInstance ().getCurrentUser ();
213
+ userCallback (u , callback );
214
+ } else {
215
+ userErrorCallback (task , callback );
216
+ }
217
+ }
218
+ });
219
+ } else {
220
+ WritableMap err = Arguments .createMap ();
221
+ err .putInt ("errorCode" , NO_CURRENT_USER );
222
+ err .putString ("errorMessage" , "No current user" );
223
+ callback .invoke (err );
224
+ }
194
225
}
195
226
196
227
@ ReactMethod
0 commit comments