Example #1
0
        public User(string pin)
        {
            var token = TwitterClient.Current.Session.GetTokensAsync(pin).Result;

            TwitterKeys.SaveTokens(token);
            Initialize(token);
        }
        public TwitterKeys Get()
        {
            TwitterKeys keys = null;

            if (!File.Exists(file))
            {
                keys = new TwitterKeys
                {
                };
                Save(keys);
                return(keys);
            }
            keys = null;
            StreamReader sr = null;

            try
            {
                sr = new StreamReader(file);
                var str        = sr.ReadToEnd();
                var serializer = new JavaScriptSerializer();
                keys = serializer.Deserialize <TwitterKeys>(str);
            }
            finally
            {
                sr.Close();
                sr.Dispose();
                sr = null;
            }
            return(keys);
        }
Example #3
0
        static void ConfigureServices(HostBuilderContext context, IServiceCollection services)
        {
            services.AddScoped <ILoadApplicationCredentials, EnvironmentVariablesKeysLoader>();

            TwitterKeys keys = services.BuildServiceProvider()
                               .GetRequiredService <ILoadApplicationCredentials>()
                               .Load();

            services.AddSingleton(keys);
            services.AddScoped <OmniScraperContext>();
            services.AddScoped <ITwitterRepository, LinqToTwitterRepository>();
            services.AddScoped <TweetProcessingService>();
            services.Configure <TweetProcessorSettings>(context.Configuration.GetSection("TweetProcessorSettings"));
            services.AddDbContext <OmniscraperDbContext>((options) =>
            {
                options.UseNpgsql(context.Configuration.GetConnectionString("Postgres"));
                options.UseSnakeCaseNamingConvention();
            });
            services.AddScoped <IScraperRepository, ScraperRepository>();

            services.AddHostedService <TweetListeningBackgroundService>();
            services.AddLogging();

            services.AddScoped <TwitterContentHandlerFactory>();
        }
 private static void checkHasSetUserCred()
 {
     if (hasSetUserCred == false)
     {
         Auth.SetUserCredentials(TwitterKeys.getConsumerKey(), TwitterKeys.getConsumerKeySecret(), TwitterKeys.getAccessToken(), TwitterKeys.getAccessTokenSecret());
         hasSetUserCred = true;
     }
 }
Example #5
0
        public User()
        {
            var data = RealmHelper.Instance.All <UserData>().ToList().FirstOrDefault(x => x.Current);

            if (data != null)
            {
                Initialize(TwitterKeys.GetTokens(data.Id));
            }
        }
    public static Client CreateClient(this TwitterKeys keys)
    {
        var oauth = new Oauth(
            keys.ConsumerKey,
            keys.ConsumerSecret,
            keys.AccessToken,
            keys.AccessTokenSecret);

        return(new Client(oauth));
    }
Example #7
0
        public TwitterKeys Load()
        {
            var keys = new TwitterKeys
            {
                ConsumerKey       = GetValue(ConsumerKeyName),
                ConsumerSecret    = GetValue(ConsumerSecretName),
                AccessToken       = GetValue(AccessTokenName),
                AccessTokenSecret = GetValue(AccessTokenSecretName)
            };

            return(keys);
        }
Example #8
0
        IAuthorizer ApplicationAuthorizer(TwitterKeys keys)
        {
            var auth = new SingleUserAuthorizer()
            {
                CredentialStore = new SingleUserInMemoryCredentialStore
                {
                    ConsumerKey       = keys.ConsumerKey,
                    ConsumerSecret    = keys.ConsumerSecret,
                    AccessToken       = keys.AccessToken,
                    AccessTokenSecret = keys.AccessTokenSecret
                },
            };

            return(auth);
        }
        public void Save(TwitterKeys site)
        {
            StreamWriter sw = null;

            try
            {
                sw = new StreamWriter(file);
                var serializer = new JavaScriptSerializer();
                var str        = serializer.Serialize(site);
                sw.Write(str);
                sw.Flush();
            }
            finally
            {
                sw.Close();
                sw.Dispose();
                sw = null;
            }
        }
Example #10
0
        static void AuthorizeTwitterAccess_UsingOutOfBandPincode()
        {
            // Get Twitter API keys from file (don't want the secret parts hardcoded in public repository
            TwitterKeys keys = ReadKeys();

            // Configure OAuth1 with the stuff it needs for it's magic
            OAuth1Settings settings = new OAuth1Settings
            {
                ConsumerKey     = keys.consumer_key,
                ConsumerSecrect = keys.consumer_secret,
                RequestTokenUrl = new Uri(Session.BaseUri, TwitterApi.OAuthRequestTokenPath),
                AuthorizeUrl    = new Uri(Session.BaseUri, TwitterApi.OAuthAuthorizePath),
                AccessTokenUrl  = new Uri(Session.BaseUri, TwitterApi.OAuthAccessTokenPath),
                CallbackUrl     = "oob" // oob = Out Of Band
            };

            Session.OAuth1Configure(settings);

            // Attach a logger after settings has been assigned (use debugger for breakpoints inside it)
            Session.OAuth1Logger(new OAuth1Logger());

            // Get temporary credentials from Twitter (request token) and remember it internally
            OAuth1Token requestToken = Session.OAuth1GetRequestToken();

            // Ask user to authorize use of the request token
            Console.WriteLine("Now opening a browser with autorization info. Please follow instructions there.");
            Request authorizationRequest = Session.Bind(TwitterApi.OAuthAuthorizePath, requestToken);

            Process.Start(authorizationRequest.Url.AbsoluteUri);

            Console.WriteLine("Please enter Twitter pincode: ");
            string pincode = Console.ReadLine();

            if (!string.IsNullOrWhiteSpace(pincode))
            {
                // Get access credentials from Twitter
                Session.OAuth1GetAccessTokenFromRequestToken(pincode);
            }
        }
Example #11
0
 public OmniScraperContext(TwitterKeys keys)
 {
     context = new TwitterContext(ApplicationAuthorizer(keys));
 }
        protected override void OnElementChanged(ElementChangedEventArgs <Page> e)
        {
            base.OnElementChanged(e);
            var activity = this.Context as Android.App.Activity;
            OAuth2Authenticator auth2 = null;
            OAuth1Authenticator auth1 = null;
            IKeys keys = null;

            var authPage = Element as AuthorizePage;

            switch (authPage.Service)
            {
            case LoginServices.Facebook:
                keys  = new FacebookKeys();
                auth2 = new OAuth2Authenticator(
                    clientId: keys.ClientId,
                    scope: keys.Scope,
                    authorizeUrl: new Uri(keys.AuthorizeUrl),
                    redirectUrl: new Uri(keys.RedirectUrl));
                break;

            case LoginServices.Twitter:
                keys  = new TwitterKeys();
                auth1 = new OAuth1Authenticator(
                    consumerKey: keys.ConsumerKey,
                    consumerSecret: keys.ConsumerSecret,
                    requestTokenUrl: new Uri(keys.RequestTokenUrl),
                    authorizeUrl: new Uri(keys.AuthorizeUrl),
                    accessTokenUrl: new Uri(keys.AccessTokenUrl),
                    callbackUrl: new Uri(keys.CallbackUrl));
                break;

            default:
                throw new Exception("Service " + authPage.Service + " not yet supported");
            }
            if (auth2 != null)
            {
                auth2.Completed += async(sender, eventArgs) =>
                {
                    if (eventArgs.IsAuthenticated)
                    {
                        AccountStore.Create().Save(eventArgs.Account, authPage.Service.ToString());
                    }
                    await authPage.Navigation.PopAsync();
                };
                activity.StartActivity(auth2.GetUI(activity));
            }

            if (auth1 != null)
            {
                auth1.Completed += async(sender, eventArgs) =>
                {
                    if (eventArgs.IsAuthenticated)
                    {
                        AccountStore.Create().Save(eventArgs.Account, authPage.Service.ToString());
                    }
                    await authPage.Navigation.PopAsync();
                };

                activity.StartActivity(auth1.GetUI(activity));
            }
        }
Example #13
0
        public static async Task Can_Authenticate_With_OAuth_Async_With_Callback(TwitterKeys twitterKeys)
        {
            Console.WriteLine("OAuth test with callback");

            var baseUrl = new Uri("https://api.twitter.com");

            var client = new RestClient(baseUrl)
            {
                Authenticator = OAuth1Authenticator.ForRequestToken(
                    twitterKeys.ConsumerKey,
                    twitterKeys.ConsumerSecret,
                    "https://restsharp.dev"
                    )
            };
            var request  = new RestRequest("oauth/request_token");
            var response = await client.ExecuteAsync(request);

            Assert.NotNull(response);
            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);

            var qs               = HttpUtility.ParseQueryString(response.Content);
            var oauthToken       = qs["oauth_token"];
            var oauthTokenSecret = qs["oauth_token_secret"];

            Assert.NotNull(oauthToken);
            Assert.NotNull(oauthTokenSecret);

            request = new RestRequest("oauth/authorize?oauth_token=" + oauthToken);

            var url = client.BuildUri(request)
                      .ToString();

            Console.WriteLine($"Open this URL in the browser: {url} and complete the authentication.");
            Console.Write("Enter the verifier: ");
            var verifier = Console.ReadLine();

            request = new RestRequest("oauth/access_token");

            client.Authenticator = OAuth1Authenticator.ForAccessToken(
                twitterKeys.ConsumerKey,
                twitterKeys.ConsumerSecret,
                oauthToken,
                oauthTokenSecret,
                verifier !
                );
            response = await client.ExecuteAsync(request);

            Assert.NotNull(response);
            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);

            qs               = HttpUtility.ParseQueryString(response.Content);
            oauthToken       = qs["oauth_token"];
            oauthTokenSecret = qs["oauth_token_secret"];

            Assert.NotNull(oauthToken);
            Assert.NotNull(oauthTokenSecret);

            request = new RestRequest("1.1/account/verify_credentials.json");

            client.Authenticator = OAuth1Authenticator.ForProtectedResource(
                twitterKeys.ConsumerKey,
                twitterKeys.ConsumerSecret,
                oauthToken,
                oauthTokenSecret
                );
            response = await client.ExecuteAsync(request);

            Console.WriteLine($"Code: {response.StatusCode}, response: {response.Content}");
        }
Example #14
0
 public User(long userId)
 {
     Initialize(TwitterKeys.GetTokens(userId));
 }
Example #15
0
 public void SaveTwitterKeys(TwitterKeys keys)
 {
     _dal.TwitterKeysProvider.Save(keys);
 }
Example #16
0
 public OAuthController(IOptions <TwitterKeys> twitterKeys)
 {
     this.twitterKeys = twitterKeys.Value;
 }