public Task <NXLoginResult> LoginWithAccountKit(NXLoginType type, NXResponseType responseType) { InitAK(responseType == NXResponseType.AccessToken ? AKFResponseType.AccessToken : AKFResponseType.AuthorizationCode, true); loginTaskCompletionSource?.TrySetCanceled(); loginTaskCompletionSource = new TaskCompletionSource <NXLoginResult>(); pendingLoginViewController = type == NXLoginType.Phone ? accountKit.GetViewControllerForPhoneLogin() : accountKit.GetViewControllerForEmailLogin(); var loginViewController = (pendingLoginViewController as IAKFViewController); if (loginViewController != null) { loginViewController.Delegate = this; loginViewController.EnableSendToFacebook = true; loginViewController.Theme = theme; } NSOperationQueue.MainQueue.BeginInvokeOnMainThread(() => { var vcInContext = GetTopMostController(); vcInContext.PresentViewController(pendingLoginViewController, true, null); }); return(loginTaskCompletionSource.Task); }
public Task <NXLoginResult> LoginWithAccountKit(NXLoginType loginType, NXResponseType responseType) { var taskCompletionSource = new TaskCompletionSource <NXLoginResult>(); Action <IAKAccountKitLoginResult> onAKResult = (e) => { if (e == null) { taskCompletionSource.SetResult(new NXLoginResult(false)); } else { var tokenOrCode = responseType == NXResponseType.AccessToken ? e.AccessToken?.Token : e.AuthorizationCode; var result = new NXLoginResult(true, false, tokenOrCode); taskCompletionSource.SetResult(result); } HiddenAccountKitActivity.Completed = null; }; HiddenAccountKitActivity.Completed = onAKResult; var context = activityInContext?.Invoke(); var intent = new Intent(context, typeof(HiddenAccountKitActivity)); intent.PutExtra(nameof(NXResponseType), (int)responseType); intent.PutExtra(nameof(NXLoginType), (int)loginType); context?.StartActivity(intent); return(taskCompletionSource.Task); }