public void Autorize() { SettingsWorker settingsWorker = new SettingsWorker("Settings.ini"); settingsWorker.LoadSettings(); Auth.SetUserCredentials(settingsWorker.settings.consumerKey, settingsWorker.settings.consumerSecret, settingsWorker.settings.userAccessToken, settingsWorker.settings.userAccessSecret); if (User.GetAuthenticatedUser() == null) //invalid Credentials { try { var appCredentials = new Tweetinvi.Models.TwitterCredentials( settingsWorker.settings.consumerKey, settingsWorker.settings.consumerSecret); var authenticationContext = AuthFlow.InitAuthentication(appCredentials); Process.Start(authenticationContext.AuthorizationURL); var pinCode = Console.ReadLine(); var newCredentials = AuthFlow.CreateCredentialsFromVerifierCode(pinCode, authenticationContext); Auth.SetCredentials(newCredentials); settingsWorker.settings.userAccessToken = newCredentials.AccessToken; settingsWorker.settings.userAccessSecret = newCredentials.AccessTokenSecret; settingsWorker.SaveSettings(); } catch { throw new Exception("Autorization Failed!"); } } }
private static void InitTwitterCredentials() { var creds = new Tweetinvi.Models.TwitterCredentials(AccessToken, AccessTokenSecret, ConsumerKey, ConsumerSecret); Auth.SetUserCredentials(ConsumerKey, ConsumerSecret, AccessToken, AccessTokenSecret); Auth.ApplicationCredentials = creds; }
public static void GetListOfSubscriptions() { Tweetinvi.Models.TwitterCredentials tempCredentials = new Tweetinvi.Models.TwitterCredentials(Tweetinvi.Auth.Credentials.ConsumerKey, Tweetinvi.Auth.Credentials.ConsumerSecret); Tweetinvi.Auth.InitializeApplicationOnlyCredentials(tempCredentials, true); Tweetinvi.Core.Public.Models.Authentication.ConsumerOnlyCredentials credentials = new Tweetinvi.Core.Public.Models.Authentication.ConsumerOnlyCredentials(tempCredentials.ConsumerKey, tempCredentials.ConsumerSecret) { ApplicationOnlyBearerToken = tempCredentials.ApplicationOnlyBearerToken }; var task = Webhooks.GetListOfSubscriptionsAsync(webHookEnvironmentName, credentials); task.Wait(); }
public async Task <ActionResult> Create(CreateViewModel Model, string Username, string Network) { ViewData["NetworkOptions"] = NetworkOptions; using (SqlConnection dbConn = new SqlConnection()) { dbConn.ConnectionString = Configuration.DB; //dbConn.ConnectionString = ConfigurationManager.ConnectionStrings["Bloometa_DB"].ConnectionString; dbConn.Open(); SqlCommand RetrieveAccount = new SqlCommand(@" SELECT TOP(1) [AccID] FROM UAccounts WHERE [Username] = @Username AND [Network] = @Network AND [Removed] = 0", dbConn); RetrieveAccount.Parameters.Add("@Username", SqlDbType.NVarChar).Value = Username; RetrieveAccount.Parameters.Add("@Network", SqlDbType.NVarChar).Value = Network.ToLower(); using (SqlDataReader results = RetrieveAccount.ExecuteReader()) { if (results.HasRows) { while (results.Read()) { return(RedirectToAction("Account", new { ID = results["AccID"].ToString() })); } } } int FollowCount, FollowerCount; string UserFullName, UserID; // Validate the new user exists switch (Network.ToLower()) { case "instagram": HttpClient netClient = new HttpClient(); netClient.DefaultRequestHeaders.Accept.Clear(); netClient.DefaultRequestHeaders.Accept .Add(new MediaTypeWithQualityHeaderValue("application/json")); HttpResponseMessage netResponse = await netClient.GetAsync(new Uri(String.Format("https://instagram.com/{0}/?__a=1", Username))); if (netResponse.IsSuccessStatusCode) { JToken netData = JObject.Parse(await netResponse.Content.ReadAsStringAsync()).SelectToken("user"); FollowCount = Int32.Parse((string)netData.SelectToken("follows") .SelectToken("count")); FollowerCount = Int32.Parse((string)netData.SelectToken("followed_by") .SelectToken("count")); Username = (string)netData.SelectToken("username"); UserFullName = (string)netData.SelectToken("full_name"); UserID = (string)netData.SelectToken("id"); } else { if (netResponse.StatusCode == HttpStatusCode.NotFound) { ViewData["AccResponse"] = "Could not find a user by that name."; } else { ViewData["AccResponse"] = "An unknown error occurred while connecting to Instagram."; } return(View(Model)); } break; case "twitter": var TWCredentials = new Tweetinvi.Models.TwitterCredentials( Configuration.TwitterKey, Configuration.TwitterSecret, Configuration.TwitterAccessKey, Configuration.TwitterAccessSecret); Tweetinvi.Models.IUser User; try { User = Tweetinvi.Auth.ExecuteOperationWithCredentials(TWCredentials, () => { return(Tweetinvi.User.GetUserFromScreenName(Username)); }); FollowCount = User.FriendsCount; FollowerCount = User.FollowersCount; Username = User.ScreenName; UserFullName = User.Name; UserID = String.Format("{0}", User.Id); } catch { ViewData["AccResponse"] = "Could not find a user by that name."; return(View(Model)); } break; default: ViewData["AccResponse"] = "Invalid network selected."; return(View(Model)); } SqlCommand CheckAccountID = new SqlCommand(@" SELECT TOP(1) [AccID] FROM UAccounts WHERE [UserID] = @UserID AND [Network] = @Network AND [Removed] = 0", dbConn); CheckAccountID.Parameters.Add("@UserID", SqlDbType.NVarChar).Value = UserID; CheckAccountID.Parameters.Add("@Network", SqlDbType.NVarChar).Value = Network.ToLower(); string AccID = null; using (SqlDataReader results = CheckAccountID.ExecuteReader()) { // If the users ID already exists, they probably changed their // handle, so just update that here so the historical tracking // data remains available if (results.HasRows) { while (results.Read()) { AccID = results["AccID"].ToString(); } } } if (!String.IsNullOrEmpty(AccID)) { using (SqlCommand UpdateAccount = new SqlCommand(@" UPDATE UAccounts SET Username = @Username, FullName = @FullName WHERE AccID = @AccID AND [Removed] = 0", dbConn)) { UpdateAccount.Parameters.Add("@AccID", SqlDbType.UniqueIdentifier).Value = new Guid(AccID); UpdateAccount.Parameters.Add("@Username", SqlDbType.NVarChar).Value = Username; UpdateAccount.Parameters.Add("@FullName", SqlDbType.NVarChar).Value = String.IsNullOrEmpty(UserFullName) ? Username : UserFullName; UpdateAccount.ExecuteNonQuery(); return(RedirectToAction("Account", new { ID = AccID })); } } // Everything is all good so far! Add the account to DB to be tracked using (SqlCommand InsertAccount = new SqlCommand(@" INSERT INTO UAccounts ([Network], [Username], [UserID], [FullName]) OUTPUT INSERTED.[AccID] VALUES (@Network, @Username, @UserID, @FullName)", dbConn)) { InsertAccount.Parameters.Add("@Network", SqlDbType.NVarChar).Value = Network.ToLower(); InsertAccount.Parameters.Add("@Username", SqlDbType.NVarChar).Value = Username; InsertAccount.Parameters.Add("@UserID", SqlDbType.NVarChar).Value = UserID; InsertAccount.Parameters.Add("@FullName", SqlDbType.NVarChar).Value = String.IsNullOrEmpty(UserFullName) ? Username : UserFullName; using (SqlDataReader results = InsertAccount.ExecuteReader()) { if (results.HasRows) { while (results.Read()) { AccID = results["AccID"].ToString(); } } else { ViewData["AccResponse"] = "An error occurred while writing the data."; return(View(Model)); } } // May as well insert the data we got earlier, rather than waste a net request. // No need to manually enqueue, in this case. if (!String.IsNullOrEmpty(AccID)) { using (SqlCommand InsertDataRow = new SqlCommand(@" INSERT INTO UData ([AccID], [FollowCount], [FollowerCount]) VALUES (@AccID, @FollowCount, @FollowerCount)", dbConn)) { InsertDataRow.Parameters.Add("@AccID", SqlDbType.UniqueIdentifier).Value = new Guid(AccID); InsertDataRow.Parameters.Add("@FollowCount", SqlDbType.Int).Value = FollowCount; InsertDataRow.Parameters.Add("@FollowerCount", SqlDbType.Int).Value = FollowerCount; InsertDataRow.ExecuteNonQuery(); return(RedirectToAction("Account", new { ID = AccID })); } } else { ViewData["AccResponse"] = "An error occurred while writing the data."; return(View(Model)); } } } }