diff --git a/Parse/Parse/Internal/User/AuthenticationProviders/Controller/PFUserAuthenticationController.m b/Parse/Parse/Internal/User/AuthenticationProviders/Controller/PFUserAuthenticationController.m index 2ac630632..6e01cd939 100644 --- a/Parse/Parse/Internal/User/AuthenticationProviders/Controller/PFUserAuthenticationController.m +++ b/Parse/Parse/Internal/User/AuthenticationProviders/Controller/PFUserAuthenticationController.m @@ -56,12 +56,19 @@ - (void)registerAuthenticationDelegate:(id)delegat PFParameterAssert(delegate, @"Authentication delegate can't be `nil`."); PFParameterAssert(authType, @"`authType` can't be `nil`."); - // If auth delete is already registered then unregister it gracefully + // If auth delete is already registered for provider if ([self authenticationDelegateForAuthType:authType]) { + + // If same auth delete is already registered then don't register it again + if ([self authenticationDelegateForAuthType:authType] == delegate) { + NSLog(@"skipping registering as same delegate already registered for authType `%@`.", authType); + return; + } + NSLog(@"unregistering existing deletegate to gracefully register new delegate for authType `%@`.", authType); [self unregisterAuthenticationDelegateForAuthType:authType]; } - + dispatch_sync(_dataAccessQueue, ^{ self->_authenticationDelegates[authType] = delegate; });