@@ -187,10 +187,41 @@ public void onComplete(@NonNull Task<AuthResult> task) {
187187
188188 @ ReactMethod
189189 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+ }
194225 }
195226
196227 @ ReactMethod
0 commit comments