Exemplo n.º 1
0
        public static TToken GetToken <TService, TToken>()
            where TService : ResourceProvider
            where TToken : TokenCredentials
        {
            var token1 = AppSettings[typeof(TService).Name]?.ToString();
            var token  = token1.AsEntity <TToken>();

            if (token is OAuth1Credentials)
            {
                var clientCredentials = new CredentialApplicationSettings()
                                        .GetClientCredentials <TService, OAuth1Credentials>();
                (token as OAuth1Credentials).SetConsumerProperties(
                    clientCredentials.ConsumerKey,
                    clientCredentials.ConsumerSecret);
            }
            else if (token is OAuth2Credentials)
            {
                var clientCredentials = new CredentialApplicationSettings()
                                        .GetClientCredentials <TService, OAuth2Credentials>();

                (token as OAuth2Credentials).SetClientProperties(
                    clientCredentials.ClientId,
                    clientCredentials.ClientSecret);
            }

            return(token);
        }
Exemplo n.º 2
0
 public OAuthTokenTests()
 {
     _settings = new CredentialApplicationSettings();
 }
Exemplo n.º 3
0
        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}");
            };
        }
Exemplo n.º 4
0
        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);
            };
        }