static OAuthApi() { //Setup default ShowAuthenticator #if __IOS__ OAuthApi.ShowAuthenticator = WebAuthenticatorWindow.PresentAuthenticator; #elif __ANDROID__ OAuthApi.ShowAuthenticator = (authenticator) => { try { var context = Android.App.Application.Context; var i = new global::Android.Content.Intent(context, typeof(WebAuthenticatorActivity)); var state = new WebAuthenticatorActivity.State { Authenticator = authenticator, }; i.SetFlags(Android.Content.ActivityFlags.NewTask); i.PutExtra("StateKey", WebAuthenticatorActivity.StateRepo.Add(state)); context.StartActivity(i); } catch (Exception ex) { authenticator.OnError(ex.Message); } }; #elif __OSX__ OAuthApi.ShowAuthenticator = (authenticator) => { var invoker = new Foundation.NSObject(); invoker.BeginInvokeOnMainThread(() => { try { var vc = new SimpleAuth.Mac.WebAuthenticatorWebView(authenticator); SimpleAuth.Mac.WebAuthenticatorWebView.ShowWebivew(vc); } catch (Exception ex) { authenticator.OnError(ex.Message); } }); }; #elif WINDOWS_UWP OAuthApi.ShowAuthenticator = async(authenticator) => { await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, async() => { try { var vc = new SimpleAuth.UWP.WebAuthenticatorWebView(authenticator); await vc.ShowAsync(); } catch (Exception ex) { authenticator.OnError(ex.Message); } }); }; #endif }
static OAuthApi() { //Setup default ShowAuthenticator #if __IOS__ OAuthApi.ShowAuthenticator = (authenticator) => { var invoker = new Foundation.NSObject(); invoker.BeginInvokeOnMainThread(() => { var vc = new iOS.WebAuthenticatorViewController(authenticator); var window = UIKit.UIApplication.SharedApplication.KeyWindow; var root = window.RootViewController; if (root != null) { var current = root; while (current.PresentedViewController != null) { current = current.PresentedViewController; } current.PresentViewControllerAsync(new UIKit.UINavigationController(vc), true); } }); }; #elif __ANDROID__ OAuthApi.ShowAuthenticator = (authenticator) => { var context = Android.App.Application.Context; var i = new global::Android.Content.Intent(context, typeof(WebAuthenticatorActivity)); var state = new WebAuthenticatorActivity.State { Authenticator = authenticator, }; i.SetFlags(Android.Content.ActivityFlags.NewTask); i.PutExtra("StateKey", WebAuthenticatorActivity.StateRepo.Add(state)); context.StartActivity(i); }; #elif __OSX__ OAuthApi.ShowAuthenticator = (authenticator) => { var invoker = new Foundation.NSObject(); invoker.BeginInvokeOnMainThread(() => { var vc = new SimpleAuth.Mac.WebAuthenticatorWebView(authenticator); SimpleAuth.Mac.WebAuthenticatorWebView.ShowWebivew(vc); }); }; #elif WINDOWS_UWP OAuthApi.ShowAuthenticator = async(authenticator) => { await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, async() => { var vc = new SimpleAuth.UWP.WebAuthenticatorWebView(authenticator); await vc.ShowAsync(); }); }; #endif }
protected OAuthApi(string identifier, string clientId, string clientSecret, HttpMessageHandler handler = null) : base(identifier, handler) { this.ClientId = clientId; this.ClientSecret = clientSecret; #if __IOS__ Api.ShowAuthenticator = (authenticator) => { var invoker = new Foundation.NSObject(); invoker.BeginInvokeOnMainThread(() => { var vc = new iOS.WebAuthenticator(authenticator); var window = UIKit.UIApplication.SharedApplication.KeyWindow; var root = window.RootViewController; if (root != null) { var current = root; while (current.PresentedViewController != null) { current = current.PresentedViewController; } current.PresentViewControllerAsync(new UIKit.UINavigationController(vc), true); } }); }; #elif __ANDROID__ Api.ShowAuthenticator = (authenticator) => { var context = Android.App.Application.Context; var i = new global::Android.Content.Intent(context, typeof(WebAuthenticatorActivity)); var state = new WebAuthenticatorActivity.State { Authenticator = authenticator, }; i.SetFlags(Android.Content.ActivityFlags.NewTask); i.PutExtra("StateKey", WebAuthenticatorActivity.StateRepo.Add(state)); context.StartActivity(i); }; #elif __OSX__ Api.ShowAuthenticator = (authenticator) => { var invoker = new Foundation.NSObject(); invoker.BeginInvokeOnMainThread(() => { var vc = new SimpleAuth.Mac.WebAuthenticator(authenticator); SimpleAuth.Mac.WebAuthenticator.ShowWebivew(vc); }); }; #endif }