@@ -166,16 +166,17 @@ - (void)signInWithProviderUI:(id<FUIAuthProvider>)providerUI
166166 [presentingViewController isKindOfClass: [FUIAuthPickerViewController class ]];
167167 if (error) {
168168 if (!isAuthPickerShown || error.code != FUIAuthErrorCodeUserCancelledSignIn) {
169- [self invokeResultCallbackWithUser :nil error: error];
169+ [self invokeResultCallbackWithAuthDataResult :nil error: error];
170170 }
171171 if (result) {
172172 result (nil , error);
173173 }
174174 return ;
175175 }
176176
177- [self .auth signInWithCredential: credential
178- completion: ^(FIRUser *_Nullable user, NSError *_Nullable error) {
177+ [self .auth signInAndRetrieveDataWithCredential: credential
178+ completion: ^(FIRAuthDataResult *_Nullable authResult,
179+ NSError *_Nullable error) {
179180 if (error && error.code == FIRAuthErrorCodeAccountExistsWithDifferentCredential) {
180181 NSString *email = error.userInfo [kErrorUserInfoEmailKey ];
181182 [self handleAccountLinkingForEmail: email
@@ -185,20 +186,22 @@ - (void)signInWithProviderUI:(id<FUIAuthProvider>)providerUI
185186 return ;
186187 }
187188
188- if (result) {
189- result (user, error);
190- }
191-
192189 if (error) {
193- [self invokeResultCallbackWithUser: user error: error];
190+ if (result) {
191+ result (nil , error);
192+ }
193+ [self invokeResultCallbackWithAuthDataResult: nil error: error];
194194 } else {
195+ if (result) {
196+ result (authResult.user , nil );
197+ }
195198 // Hide Auth Picker Controller which was presented modally.
196199 if (isAuthPickerShown && presentingViewController.presentingViewController ) {
197200 [presentingViewController dismissViewControllerAnimated: YES completion: ^{
198- [self invokeResultCallbackWithUser: user error: error ];
201+ [self invokeResultCallbackWithAuthDataResult: authResult error: nil ];
199202 }];
200203 } else {
201- [self invokeResultCallbackWithUser: user error: error ];
204+ [self invokeResultCallbackWithAuthDataResult: authResult error: nil ];
202205 }
203206 }
204207 }];
@@ -224,7 +227,7 @@ - (void)handleAccountLinkingForEmail:(NSString *)email
224227 presentingViewController: presentingViewController];
225228 } else {
226229 [presentingViewController dismissViewControllerAnimated: YES completion: ^{
227- [self invokeResultCallbackWithUser :nil error: error];
230+ [self invokeResultCallbackWithAuthDataResult :nil error: error];
228231 }];
229232 }
230233 return ;
@@ -287,29 +290,30 @@ - (void)handleAccountLinkingForEmail:(NSString *)email
287290 }
288291 return ;
289292 }
290- [self invokeResultCallbackWithUser :nil error: error];
293+ [self invokeResultCallbackWithAuthDataResult :nil error: error];
291294 return ;
292295 }
293296
294297 [self .auth signInWithCredential: credential completion: ^(FIRUser *_Nullable user,
295298 NSError *_Nullable error) {
296299 if (error) {
297- [self invokeResultCallbackWithUser :nil error: error];
300+ [self invokeResultCallbackWithAuthDataResult :nil error: error];
298301 if (result) {
299302 result (nil , error);
300303 }
301304 return ;
302305 }
303306
304- [user linkWithCredential: newCredential completion: ^(FIRUser *_Nullable user,
305- NSError *_Nullable error) {
307+ [user linkAndRetrieveDataWithCredential: newCredential
308+ completion: ^(FIRAuthDataResult *_Nullable authResult,
309+ NSError *_Nullable error) {
306310 if (result) {
307- result (user, error);
311+ result (authResult. user , error);
308312 }
309313 // Ignore any error (most likely caused by email mismatch) and treat the user as
310314 // successfully signed in.
311315 [presentingViewController dismissViewControllerAnimated: YES completion: ^{
312- [self invokeResultCallbackWithUser: user error: nil ];
316+ [self invokeResultCallbackWithAuthDataResult: authResult error: nil ];
313317 }];
314318 }];
315319 }];
@@ -322,9 +326,15 @@ - (void)handleAccountLinkingForEmail:(NSString *)email
322326
323327#pragma mark - Internal Methods
324328
325- - (void )invokeResultCallbackWithUser : (FIRUser *_Nullable)user error : (NSError *_Nullable)error {
329+ - (void )invokeResultCallbackWithAuthDataResult : (nullable FIRAuthDataResult *)authDataResult
330+ error : (nullable NSError *)error {
326331 dispatch_async (dispatch_get_main_queue (), ^{
327- [self .delegate authUI: self didSignInWithUser: user error: error];
332+ if ([self .delegate respondsToSelector: @selector (authUI:didSignInWithAuthDataResult:error: )]) {
333+ [self .delegate authUI: self didSignInWithAuthDataResult: authDataResult error: error];
334+ }
335+ if ([self .delegate respondsToSelector: @selector (authUI:didSignInWithUser:error: )]) {
336+ [self .delegate authUI: self didSignInWithUser: authDataResult.user error: error];
337+ }
328338 });
329339}
330340
0 commit comments