private void StartGoogleAuth(object sender, EventArgs e) { Xamarin.Auth.OAuth2Authenticator authentificator = GoogleAuthenticator.GetAuthenticator(); UIViewController viewController = authentificator.GetUI(); PresentViewController(viewController, true, null); }
private void StartFacebookAuth(object sender, EventArgs e) { _facebookAuthenticator = new FacebookAuthenticator(Configuration.ClientId, Configuration.Scope, ViewModel); Xamarin.Auth.OAuth2Authenticator authenticator = _facebookAuthenticator.GetAuthenticator(); UIViewController view = authenticator.GetUI(); PresentViewController(view, true, null); }
private void OnFacebookLoginButtonClicked(object sender, EventArgs e) { _authFacebook = new FacebookAuthenticator(Configuration.ClientId, Configuration.Scope, ViewModel); Xamarin.Auth.OAuth2Authenticator authenticator = _authFacebook.GetAuthenticator(); Intent intent = authenticator.GetUI(Activity); StartActivity(intent); }
public static Task SignIn() { return(Thread.UI.Run(() => { if (UIRuntime.NativeRootScreen is UIViewController controller) { UI = Auth.GetUI(); controller.PresentViewController(UI, animated: true, null); } })); }
// IOAuthAuthorizeHandler.AuthorizeAsync implementation. public Task <IDictionary <string, string> > AuthorizeAsync(Uri serviceUri, Uri authorizeUri, Uri callbackUri) { // If the TaskCompletionSource is not null, authorization is in progress. if (_taskCompletionSource != null) { // Allow only one authorization process at a time. throw new Exception(); } // Create a task completion source. _taskCompletionSource = new TaskCompletionSource <IDictionary <string, string> >(); // Create a new Xamarin.Auth.OAuth2Authenticator using the information passed in. Xamarin.Auth.OAuth2Authenticator authenticator = new Xamarin.Auth.OAuth2Authenticator( clientId: AppClientId, scope: "", authorizeUrl: authorizeUri, redirectUrl: callbackUri) { // Allow the user to cancel the OAuth attempt. AllowCancel = true }; // Define a handler for the OAuth2Authenticator.Completed event. authenticator.Completed += (sender, authArgs) => { try { // Check if the user is authenticated. if (authArgs.IsAuthenticated) { // If authorization was successful, get the user's account. Xamarin.Auth.Account authenticatedAccount = authArgs.Account; // Set the result (Credential) for the TaskCompletionSource. _taskCompletionSource.SetResult(authenticatedAccount.Properties); } } catch (Exception ex) { // If authentication failed, set the exception on the TaskCompletionSource. _taskCompletionSource.SetException(ex); } finally { // End the OAuth login activity. this.FinishActivity(99); } }; // If an error was encountered when authenticating, set the exception on the TaskCompletionSource. authenticator.Error += (sender, errArgs) => { // If the user cancels, the Error event is raised but there is no exception ... best to check first. if (errArgs.Exception != null) { _taskCompletionSource.SetException(errArgs.Exception); } else { // Login canceled: end the OAuth login activity. if (_taskCompletionSource != null) { _taskCompletionSource.TrySetCanceled(); this.FinishActivity(99); } } }; // Present the OAuth UI (Activity) so the user can enter user name and password. Intent intent = authenticator.GetUI(this); this.StartActivityForResult(intent, 99); // Return completion source task so the caller can await completion. return(_taskCompletionSource.Task); }
// IOAuthAuthorizeHandler.AuthorizeAsync implementation public Task <IDictionary <string, string> > AuthorizeAsync(Uri serviceUri, Uri authorizeUri, Uri callbackUri) { // If the TaskCompletionSource is not null, authorization may already be in progress and should be cancelled if (_taskCompletionSource != null) { // Try to cancel any existing authentication task _taskCompletionSource.TrySetCanceled(); } // Create a task completion source _taskCompletionSource = new TaskCompletionSource <IDictionary <string, string> >(); // Create a new Xamarin.Auth.OAuth2Authenticator using the information passed in Xamarin.Auth.OAuth2Authenticator authenticator = new Xamarin.Auth.OAuth2Authenticator( clientId: AppClientId, scope: "", authorizeUrl: authorizeUri, redirectUrl: callbackUri) { ShowErrors = false }; // Allow the user to cancel the OAuth attempt authenticator.AllowCancel = true; // Define a handler for the OAuth2Authenticator.Completed event authenticator.Completed += (sender, authArgs) => { try { // Check if the user is authenticated if (authArgs.IsAuthenticated) { // If authorization was successful, get the user's account Xamarin.Auth.Account authenticatedAccount = authArgs.Account; // Set the result (Credential) for the TaskCompletionSource _taskCompletionSource.SetResult(authenticatedAccount.Properties); } } catch (Exception ex) { // If authentication failed, set the exception on the TaskCompletionSource _taskCompletionSource.TrySetException(ex); // Cancel authentication authenticator.OnCancelled(); } finally { // Dismiss the OAuth login FinishActivity(99); } }; // If an error was encountered when authenticating, set the exception on the TaskCompletionSource authenticator.Error += (sndr, errArgs) => { // If the user cancels, the Error event is raised but there is no exception ... best to check first if (errArgs.Exception != null) { _taskCompletionSource.TrySetException(errArgs.Exception); } else { // Login canceled: dismiss the OAuth login if (_taskCompletionSource != null) { _taskCompletionSource.TrySetCanceled(); FinishActivity(99); } } // Cancel authentication authenticator.OnCancelled(); }; // Present the OAuth UI so the user can enter user name and password var intent = authenticator.GetUI(this); StartActivityForResult(intent, 99); // Return completion source task so the caller can await completion return(_taskCompletionSource.Task); }
// IOAuthAuthorizeHandler.AuthorizeAsync implementation public Task <IDictionary <string, string> > AuthorizeAsync(Uri serviceUri, Uri authorizeUri, Uri callbackUri) { // If the TaskCompletionSource is not null, authorization is in progress if (_taskCompletionSource != null) { // Allow only one authorization process at a time throw new Exception(); } // Create a task completion source _taskCompletionSource = new TaskCompletionSource <IDictionary <string, string> >(); // Create a new Xamarin.Auth.OAuth2Authenticator using the information passed in Xamarin.Auth.OAuth2Authenticator authenticator = new Xamarin.Auth.OAuth2Authenticator( clientId: AppClientId, scope: "", authorizeUrl: authorizeUri, redirectUrl: callbackUri); // Allow the user to cancel the OAuth attempt authenticator.AllowCancel = true; // Define a handler for the OAuth2Authenticator.Completed event authenticator.Completed += (sender, authArgs) => { try { // Check if the user is authenticated if (authArgs.IsAuthenticated) { // If authorization was successful, get the user's account Xamarin.Auth.Account authenticatedAccount = authArgs.Account; // Set the result (Credential) for the TaskCompletionSource _taskCompletionSource.SetResult(authenticatedAccount.Properties); } } catch (Exception ex) { // If authentication failed, set the exception on the TaskCompletionSource _taskCompletionSource.SetException(ex); } finally { // Dismiss the OAuth login this.DismissViewController(true, null); } }; // If an error was encountered when authenticating, set the exception on the TaskCompletionSource authenticator.Error += (sndr, errArgs) => { // If the user cancels, the Error event is raised but there is no exception ... best to check first if (errArgs.Exception != null) { _taskCompletionSource.SetException(errArgs.Exception); } else { // Login canceled: dismiss the OAuth login if (_taskCompletionSource != null) { _taskCompletionSource.TrySetCanceled(); this.DismissViewController(true, null); } } }; // Present the OAuth UI so the user can enter user name and password InvokeOnMainThread(() => { this.PresentViewController(authenticator.GetUI(), true, null); }); // Return completion source task so the caller can await completion return(_taskCompletionSource != null ? _taskCompletionSource.Task : null); }
public void StartActivityInAndroid(Xamarin.Auth.OAuth2Authenticator authenticator) { var intent = authenticator.GetUI(MainActivity.mainactivity); Forms.Context.StartActivity(intent); }
// IOAuthAuthorizeHandler.AuthorizeAsync implementation public Task<IDictionary<string, string>> AuthorizeAsync(Uri serviceUri, Uri authorizeUri, Uri callbackUri) { // If the TaskCompletionSource is not null, authorization is in progress if (_taskCompletionSource != null) { // Allow only one authorization process at a time throw new Exception(); } // Create a task completion source _taskCompletionSource = new TaskCompletionSource<IDictionary<string, string>>(); // Create a new Xamarin.Auth.OAuth2Authenticator using the information passed in Xamarin.Auth.OAuth2Authenticator authenticator = new Xamarin.Auth.OAuth2Authenticator( clientId: AppClientId, scope: "", authorizeUrl: authorizeUri, redirectUrl: callbackUri); // Allow the user to cancel the OAuth attempt authenticator.AllowCancel = true; // Define a handler for the OAuth2Authenticator.Completed event authenticator.Completed += (sender, authArgs) => { try { // Check if the user is authenticated if (authArgs.IsAuthenticated) { // If authorization was successful, get the user's account Xamarin.Auth.Account authenticatedAccount = authArgs.Account; // Set the result (Credential) for the TaskCompletionSource _taskCompletionSource.SetResult(authenticatedAccount.Properties); } } catch (Exception ex) { // If authentication failed, set the exception on the TaskCompletionSource _taskCompletionSource.SetException(ex); } finally { // Dismiss the OAuth login this.FinishActivity(99); } }; // If an error was encountered when authenticating, set the exception on the TaskCompletionSource authenticator.Error += (sndr, errArgs) => { // If the user cancels, the Error event is raised but there is no exception ... best to check first if (errArgs.Exception != null) { _taskCompletionSource.SetException(errArgs.Exception); } else { // Login canceled: dismiss the OAuth login if (_taskCompletionSource != null) { _taskCompletionSource.TrySetCanceled(); this.FinishActivity(99); } } }; // Present the OAuth UI so the user can enter user name and password var intent = authenticator.GetUI(this); this.StartActivityForResult(intent, 99); // Return completion source task so the caller can await completion return _taskCompletionSource.Task; }