public OAuth1App( string consumerKey, string consumerSecret, string callbackUrl, #if __WINDOWS__ AuthenticationInterfaceEnum browserType = AuthenticationInterfaceEnum.Dedicated, OAuthAppTypeEnum appType = OAuthAppTypeEnum.Desktop
public IOAuthAuthorizerUI GetAuthorizer <TResourceProvider>( AuthenticationInterfaceEnum browserType, IOAuthCallbackHandler callbackHandler) where TResourceProvider : ResourceProvider { #if __ANDROID__ switch (browserType) { case AuthenticationInterfaceEnum.Dedicated: return(new BrowserAuthorizerUI( new ProtocolOAuthCallbackListener( callbackHandler), Platform.Current)); case AuthenticationInterfaceEnum.Embedded: return(new WebViewAuthorizerUI(callbackHandler)); default: throw new NotSupportedException(); } #elif __IOS__ switch (browserType) { case AuthenticationInterfaceEnum.Dedicated: return(new BrowserAuthorizerUI( new ProtocolOAuthCallbackListener( callbackHandler), Platform.Current)); case AuthenticationInterfaceEnum.Embedded: return(new UIWebViewAuthorizerUI(callbackHandler)); default: throw new NotSupportedException(); } #elif WINDOWS_UWP switch (browserType) { case AuthenticationInterfaceEnum.Dedicated: return(new BrowserAuthorizerUI( new ProtocolOAuthCallbackListener( callbackHandler), Platform.Current)); case AuthenticationInterfaceEnum.Embedded: return(new WebViewAuthorizerUI(callbackHandler)); default: throw new NotSupportedException(); } #elif __WINDOWS__ return(new BrowserAuthorizerUI( new HttpOAuthCallbackListener( new HttpServer(), callbackHandler), Platform.Current)); #else throw new NotSupportedException(); #endif }
private void BrowserTypeToggled(object sender, RoutedEventArgs e) { _browserType = authTypeToggleSwitch.IsOn ? AuthenticationInterfaceEnum.Dedicated : AuthenticationInterfaceEnum.Embedded; _callbackType = authTypeToggleSwitch.IsOn ? CallbackTypeEnum.Protocol : CallbackTypeEnum.Localhost; }
public IOAuthAuthenticationTemplate <OAuth2Credentials> BuildOAuth2Template <TResourceProvider>( IOAuthFacade <OAuth2Credentials> authentication, AuthenticationInterfaceEnum ui, string userId, string clientSecret, ResponseTypeEnum flow) where TResourceProvider : ResourceProvider { if (flow == ResponseTypeEnum.Code) { var callbackHandler = new OAuth2QueryCallbackHandler( _strategy, OAuth2ParameterEnum.State.EnumToString(), userId); var authenticationUI = _oauthAuthorizerUIFactory .GetAuthorizer <TResourceProvider>( ui, callbackHandler); return(new OAuth2CodeAuthenticationTemplate( authenticationUI, authentication, clientSecret)); } else { IOAuthCallbackHandler callbackHandler = null; if (ui == AuthenticationInterfaceEnum.Dedicated) { callbackHandler = new OAuth2QueryCallbackHandler( _strategy, OAuth2ParameterEnum.State.EnumToString(), userId); } else { callbackHandler = new OAuth2FragmentCallbackHandler( _strategy, OAuth2ParameterEnum.State.EnumToString(), userId); } var authenticationUI = _oauthAuthorizerUIFactory .GetAuthorizer <TResourceProvider>( ui, callbackHandler); return(new OAuth2TokenAuthenticationTemplate( authenticationUI, authentication)); } }
public virtual OAuth2ResourceProvider SetFlow( string clientId, string clientSecret, AuthenticationInterfaceEnum @interface, OAuthAppTypeEnum appType) { ResponseTypeEnum flow; if (@interface == AuthenticationInterfaceEnum.Dedicated && appType == OAuthAppTypeEnum.Desktop) { flow = clientSecret != null ? ResponseTypeEnum.Code : ResponseTypeEnum.Token; } else if (@interface == AuthenticationInterfaceEnum.Embedded && appType == OAuthAppTypeEnum.Desktop) { throw new NotSupportedException( StringResources.EmbeddedDesktopUINotSupportedException); } else if (@interface == AuthenticationInterfaceEnum.Dedicated && appType == OAuthAppTypeEnum.Mobile) { flow = ResponseTypeEnum.Code; } else if (@interface == AuthenticationInterfaceEnum.Embedded && appType == OAuthAppTypeEnum.Mobile) { flow = clientSecret != null ? ResponseTypeEnum.Code : ResponseTypeEnum.Token; } else { throw new NotSupportedException(); } if (!Flows.Contains(flow)) { throw new InvalidGrantTypeException( string.Format( StringResources.GrantTypeNotSupportedException, GetType().Name)); } Flow = flow; return(this); }
public OAuth1AppBase( string consumerKey, string consumerSecret, string callbackUrl, IOAuthAuthorizerUIFactory uiFactory, TResourceProvider provider, AuthenticationInterfaceEnum browserType, OAuthAppTypeEnum appType) { _consumerKey = consumerKey; _consumerSecret = consumerSecret; _callbackUrl = callbackUrl; _uiFactory = uiFactory; _provider = provider; _browserType = browserType; _appType = appType; }
public OAuth2AppBase( string clientId, string callbackUrl, IOAuthAuthorizerUIFactory uiFactory, TResourceProvider provider, AuthenticationInterfaceEnum browserType, OAuthAppTypeEnum appType) : this( clientId, null, callbackUrl, uiFactory, provider, browserType, appType) { }
public IOAuthAuthenticationTemplate <OAuth1Credentials> BuildOAuth1Template <TResourceProvider>( IOAuthFacade <OAuth1Credentials> authentication, AuthenticationInterfaceEnum ui, string userId) where TResourceProvider : ResourceProvider { var handler = new OAuth1CallbackHandler( _strategy, OAuth1ParameterEnum.OAuthToken.EnumToString(), userId); var authenticationUI = _oauthAuthorizerUIFactory .GetAuthorizer <TResourceProvider>(ui, handler); return(new OAuth1AuthenticationTemplate( authenticationUI, authentication, _strategy, userId)); }
public OAuth2AppBase( string clientId, string clientSecret, string callbackUrl, IOAuthAuthorizerUIFactory uiFactory, TResourceProvider provider, AuthenticationInterfaceEnum browserType, OAuthAppTypeEnum appType) { _clientId = clientId; _clientSecret = clientSecret; _callbackUrl = callbackUrl; _browserType = browserType; _uiFactory = uiFactory; _provider = provider; provider.SetFlow( clientId, clientSecret, browserType, appType); }
public override void ViewDidLoad() { base.ViewDidLoad(); var settings = new CredentialApplicationSettings(); BrowserToggle.TouchUpInside += (sender, args) => { _browserType = BrowserToggle.On ? AuthenticationInterfaceEnum.Embedded : AuthenticationInterfaceEnum.Dedicated; _callbackType = BrowserToggle.On ? CallbackTypeEnum.Localhost : CallbackTypeEnum.Protocol; }; FacebookAuth.TouchUpInside += async(sender, e) => { var credentials = settings .GetClientCredentials <Facebook, OAuth2Credentials>(_callbackType); var token = await new OAuth2App <Facebook>( credentials.ClientId, credentials.ClientSecret, credentials.CallbackUrl, browserType: _browserType) .AddScope <FacebookEvent>() .GetCredentialsAsync() .ConfigureAwait(false); WriteResultToTextView("Access Token:" + token.AccessToken); }; TwitterAuth.TouchUpInside += async(sender, e) => { var credentials = settings .GetClientCredentials <Twitter, OAuth1Credentials>(_callbackType); var token = await new OAuth1App <Twitter>( credentials.ConsumerKey, credentials.ConsumerSecret, credentials.CallbackUrl, browserType: _browserType) .GetCredentialsAsync() .ConfigureAwait(false); WriteResultToTextView("OAuth Secret: " + token.OAuthSecret + "\nOAuth Token: " + token.OAuthToken); }; FatsecretAuth.TouchUpInside += async(sender, e) => { var credentials = settings .GetClientCredentials <Fatsecret, OAuth1Credentials>(_callbackType); var token = await new OAuth1App <Fatsecret>( credentials.ConsumerKey, credentials.ConsumerSecret, credentials.CallbackUrl, browserType: _browserType) .GetCredentialsAsync() .ConfigureAwait(false); WriteResultToTextView("OAuth Secret: " + token.OAuthSecret + "\nOAuth Token: " + token.OAuthToken); }; WithingsAuth.TouchUpInside += async(sender, args) => { var credentials = settings .GetClientCredentials <Withings, OAuth1Credentials>(_callbackType); var token = await new OAuth1App <Withings>( credentials.ConsumerKey, credentials.ConsumerSecret, credentials.CallbackUrl, browserType: _browserType) .GetCredentialsAsync() .ConfigureAwait(false); WriteResultToTextView("OAuth Secret: " + token.OAuthSecret + "\nOAuth Token: " + token.OAuthToken); }; SpotifyAuth.TouchUpInside += async(sender, e) => { var credentials = settings .GetClientCredentials <Spotify, OAuth2Credentials>(_callbackType); var token = await new OAuth2App <Spotify>( credentials.ClientId, credentials.ClientSecret, credentials.CallbackUrl, browserType: _browserType) .AddScope <SpotifySavedTrack>() .GetCredentialsAsync() .ConfigureAwait(false); WriteResultToTextView("Access Token:" + token.AccessToken); }; GoogleAuth.TouchUpInside += async(sender, e) => { var credentials = settings .GetClientCredentials <Google, OAuth2Credentials>(_callbackType); var token = await new OAuth2App <Google>( credentials.ClientId, credentials.ClientSecret, credentials.CallbackUrl, browserType: _browserType) .AddScope <GoogleGmailMetadata>() .GetCredentialsAsync() .ConfigureAwait(false); WriteResultToTextView("Access Token:" + token.AccessToken); }; FitbitAuth.TouchUpInside += async(sender, e) => { var credentials = settings .GetClientCredentials <Fitbit, OAuth2Credentials>(_callbackType); var token = await new OAuth2App <Fitbit>( credentials.ClientId, credentials.ClientSecret, credentials.CallbackUrl, browserType: _browserType) .AddScope <FitbitProfile>() .GetCredentialsAsync() .ConfigureAwait(false); WriteResultToTextView("Access Token:" + token.AccessToken); }; RunkeeperAuth.TouchUpInside += async(sender, e) => { var credentials = settings .GetClientCredentials <Runkeeper, OAuth2Credentials>(_callbackType); var token = await new OAuth2App <Runkeeper>( credentials.ClientId, credentials.ClientSecret, credentials.CallbackUrl, browserType: _browserType) .AddScope <RunkeeperFitnessActivity>() .GetCredentialsAsync() .ConfigureAwait(false); WriteResultToTextView("Access Token:" + token.AccessToken); }; FoursquareAuth.TouchUpInside += async(sender, e) => { var credentials = settings .GetClientCredentials <Foursquare, OAuth2Credentials>(_callbackType); var token = await new OAuth2App <Foursquare>( credentials.ClientId, credentials.ClientSecret, credentials.CallbackUrl, browserType: _browserType) .GetCredentialsAsync() .ConfigureAwait(false); WriteResultToTextView("Access Token:" + token.AccessToken); }; RescuetimeAuth.TouchUpInside += async(sender, e) => { var credentials = settings .GetClientCredentials <Rescuetime, OAuth2Credentials>(_callbackType); var token = await new OAuth2App <Rescuetime>( credentials.ClientId, credentials.ClientSecret, credentials.CallbackUrl, browserType: _browserType) .AddScope <RescuetimeAnalyticData>() .GetCredentialsAsync() .ConfigureAwait(false); WriteResultToTextView("Access Token:" + token.AccessToken); }; LinkedinAuth.TouchUpInside += async(sender, e) => { var credentials = settings .GetClientCredentials <LinkedIn, OAuth2Credentials>(_callbackType); var token = await new OAuth2App <LinkedIn>( credentials.ClientId, credentials.ClientSecret, credentials.CallbackUrl, browserType: _browserType) .AddScope <LinkedinPersonal>() .GetCredentialsAsync() .ConfigureAwait(false); WriteResultToTextView("Access Token:" + token.AccessToken); }; MioAuth.TouchUpInside += async(sender, args) => { var auth = new BluetoothApp <Mioalpha>(); var credentials = await auth.GetBluetoothCredentialsAsync() .ConfigureAwait(false); WriteResultToTextView("Device Address: " + credentials.DeviceAddress); var requester = new BluetoothRequester(); var result = await requester .MakeBluetoothRequestAsync <MioHeartRate>(credentials) .ConfigureAwait(false); WriteResultToTextView("Heart rate: " + result.Reading); }; GPS.TouchUpInside += async(sender, args) => { var result = await new GPSRequester() .MakeGPSRequestAsync() .ConfigureAwait(false); WriteResultToTextView($"Latitude: {result.Latitude}, Longitude: {result.Longitude}, Speed: {result.Speed}"); }; }
protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); var settings = new CredentialApplicationSettings(); SetContentView(Resource.Layout.Main); var toggleButton = FindViewById <ToggleButton>(Resource.Id.browserToggleButton); toggleButton.Click += (o, e) => { _browserType = toggleButton.Checked ? AuthenticationInterfaceEnum.Dedicated : AuthenticationInterfaceEnum.Embedded; _callbackType = toggleButton.Checked ? CallbackTypeEnum.Protocol : CallbackTypeEnum.Localhost; }; FindViewById <Button>(Resource.Id.facebookAuth).Click += async(sender, args) => { var credentials = settings .GetClientCredentials <Facebook, OAuth2Credentials>(_callbackType); var token = await new OAuth2App <Facebook>( credentials.ClientId, credentials.ClientSecret, credentials.CallbackUrl, browserType: _browserType) .AddScope <FacebookEvent>() .GetCredentialsAsync() .ConfigureAwait(false); WriteCredentials(token); }; FindViewById <Button>(Resource.Id.twitterAuth).Click += async(sender, args) => { var credentials = settings .GetClientCredentials <Twitter, OAuth1Credentials>(_callbackType); var token = await new OAuth1App <Twitter>( credentials.ConsumerKey, credentials.ConsumerSecret, credentials.CallbackUrl, browserType: _browserType) .GetCredentialsAsync() .ConfigureAwait(false); WriteCredentials(token); }; FindViewById <Button>(Resource.Id.fatsecretAuth).Click += async(sender, args) => { var credentials = settings .GetClientCredentials <Fatsecret, OAuth1Credentials>(_callbackType); var token = await new OAuth1App <Fatsecret>( credentials.ConsumerKey, credentials.ConsumerSecret, credentials.CallbackUrl, browserType: _browserType) .GetCredentialsAsync() .ConfigureAwait(false); WriteCredentials(token); }; FindViewById <Button>(Resource.Id.withings).Click += async(sender, args) => { var credentials = settings .GetClientCredentials <Withings, OAuth1Credentials>(_callbackType); var token = await new OAuth1App <Withings>( credentials.ConsumerKey, credentials.ConsumerSecret, credentials.CallbackUrl, browserType: _browserType) .GetCredentialsAsync() .ConfigureAwait(false); WriteCredentials(token); }; FindViewById <Button>(Resource.Id.fitbitAuth).Click += async(sender, args) => { var credentials = settings .GetClientCredentials <Fitbit, OAuth2Credentials>(_callbackType); var token = await new OAuth2App <Fitbit>( credentials.ClientId, credentials.ClientSecret, credentials.CallbackUrl, browserType: _browserType) .AddScope <FitbitProfile>() .GetCredentialsAsync() .ConfigureAwait(false); WriteCredentials(token); }; FindViewById <Button>(Resource.Id.foursquareAuth).Click += async(sender, args) => { var credentials = settings .GetClientCredentials <Foursquare, OAuth2Credentials>(_callbackType); var token = await new OAuth2App <Foursquare>( credentials.ClientId, credentials.ClientSecret, credentials.CallbackUrl, browserType: _browserType) .GetCredentialsAsync() .ConfigureAwait(false); WriteCredentials(token); }; FindViewById <Button>(Resource.Id.googleAuth).Click += async(sender, args) => { var credentials = settings .GetClientCredentials <Google, OAuth2Credentials>(_callbackType); var token = await new OAuth2App <Google>( credentials.ClientId, credentials.ClientSecret, credentials.CallbackUrl, browserType: _browserType) .AddScope <GoogleGmailMetadata>() .AddScope <GoogleGmail>() .GetCredentialsAsync() .ConfigureAwait(false); WriteCredentials(token); }; FindViewById <Button>(Resource.Id.linkedinAuth).Click += async(sender, args) => { var credentials = settings .GetClientCredentials <LinkedIn, OAuth2Credentials>(_callbackType); var token = await new OAuth2App <LinkedIn>( credentials.ClientId, credentials.ClientSecret, credentials.CallbackUrl, browserType: _browserType) .AddScope <LinkedinPersonal>() .GetCredentialsAsync() .ConfigureAwait(false); WriteCredentials(token); }; FindViewById <Button>(Resource.Id.rescuetimeAuth).Click += async(sender, args) => { var credentials = settings .GetClientCredentials <Rescuetime, OAuth2Credentials>(_callbackType); var token = await new OAuth2App <Rescuetime>( credentials.ClientId, credentials.ClientSecret, credentials.CallbackUrl, browserType: _browserType) .AddScope <RescuetimeAnalyticData>() .GetCredentialsAsync() .ConfigureAwait(false); WriteCredentials(token); }; FindViewById <Button>(Resource.Id.spotifyAuth).Click += async(sender, args) => { var credentials = settings .GetClientCredentials <Spotify, OAuth2Credentials>(_callbackType); var token = await new OAuth2App <Spotify>( credentials.ClientId, credentials.ClientSecret, credentials.CallbackUrl, browserType: _browserType) .AddScope <SpotifySavedTrack>() .GetCredentialsAsync() .ConfigureAwait(false); WriteCredentials(token); }; FindViewById <Button>(Resource.Id.runkeeperAuth).Click += async(sender, args) => { var credentials = settings .GetClientCredentials <Runkeeper, OAuth2Credentials>(_callbackType); var token = await new OAuth2App <Runkeeper>( credentials.ClientId, credentials.ClientSecret, credentials.CallbackUrl, browserType: _browserType) .AddScope <RunkeeperFitnessActivity>() .GetCredentialsAsync() .ConfigureAwait(false); WriteCredentials(token); }; FindViewById <Button>(Resource.Id.mioalphaAuth).Click += async(sender, args) => { var credentials = await new BluetoothApp <Mioalpha>() .GetBluetoothCredentialsAsync() .ConfigureAwait(false); WriteResultToTextView("Device Address: " + credentials.DeviceAddress); var result = await new BluetoothRequester() .MakeBluetoothRequestAsync <MioHeartRate>(credentials) .ConfigureAwait(false); WriteResultToTextView("Heart rate: " + result.Reading); }; FindViewById <Button>(Resource.Id.gps).Click += async(sender, args) => { var result = await new GPSRequester() .MakeGPSRequestAsync() .ConfigureAwait(false); WriteResultToTextView( $"Latitude: {result.Latitude}, Longitude: {result.Longitude}, Speed: {result.Speed}"); }; FindViewById <Button>(Resource.Id.sms).Click += async(sender, args) => { var filterDate = new DateTime(2016, 7, 21, 0, 0, 0); var results = await new SMSRequester() .MakeSMSRequestAsync(filterDate) .ConfigureAwait(false); var resultsString = string.Empty; foreach (var result in results) { resultsString += $"Address: {result.Address}, Header: {result.Subject}, Body: {result.Body}\n"; } WriteResultToTextView(resultsString); }; }