public static AppCenterTask <UserInformation> SignInAsync() { if (_signInTask != null) { var localSignInTask = new AppCenterTask <UserInformation>(); var exception = new Exception("Sign-in already in progress"); localSignInTask.SetException(exception); return(localSignInTask); } else { // Create a local variable to avoid race condition var localSignInTask = new AppCenterTask <UserInformation>(); _signInTask = localSignInTask; appcenter_unity_auth_sign_in_with_completion_handler(SignInCompletionHandlerNativeFunc); return(localSignInTask); } }
public static void SignInCompletionHandlerNativeFunc(IntPtr userInformationPtr, IntPtr nsErrorPtr) { if (_signInTask == null) { return; } else { var userInformation = GetUserInformationFromIntPtr(userInformationPtr); if (nsErrorPtr == IntPtr.Zero) { _signInTask.SetResult(userInformation); } else { _signInTask.SetException(NSErrorHelper.ToSystemException(nsErrorPtr)); } _signInTask = null; } }
public static AppCenterTask <UserInformation> SignInAsync() { var future = _auth.CallStatic <AndroidJavaObject>("signIn"); var javaTask = new AppCenterTask <AndroidJavaObject>(future); var signInTask = new AppCenterTask <UserInformation>(); javaTask.ContinueWith(t => { var exception = t.Result.Call <AndroidJavaObject>("getException"); if (exception == null) { var userInfo = t.Result.Call <AndroidJavaObject>("getUserInformation"); var accountId = userInfo.Call <string>("getAccountId"); var accessToken = userInfo.Call <string>("getAccessToken"); var idToken = userInfo.Call <string>("getIdToken"); signInTask.SetResult(new UserInformation(accountId, accessToken, idToken)); } else { signInTask.SetException(ConvertException(exception)); } }); return(signInTask); }