internal static Task <ParseUser> LogInWithAsync(string authType, IDictionary <string, object> data, CancellationToken cancellationToken) { ParseUser user = null; return(UserController.LogInAsync(authType, data, cancellationToken).OnSuccess(t => { user = ParseObject.FromState <ParseUser>(t.Result, "_User"); lock (user.mutex) { if (user.AuthData == null) { user.AuthData = new Dictionary <string, IDictionary <string, object> >(); } user.AuthData[authType] = data; user.SynchronizeAllAuthData(); } return SaveCurrentUserAsync(user); }).Unwrap().OnSuccess(t => user)); }