OAuth con Twitter en C # .NET

En pocas palabras, estoy intentando crear una página web con Visual Studio 2012 en la que el usuario iniciará sesión en una página que, cuando esté autorizado, publicará un tweet y les permitirá usar el rest de las funciones de la página. Me gustaría recordar que dichas credenciales de los usuarios también limitan la velocidad a la que usan una determinada función.

El problema es que he estado buscando durante días y no puedo encontrar un ACTUALIZADO y un ejemplo de trabajo para que pueda seguir. Todo parece estar desactualizado. ( Twitterizer ; TweetSharp ) He cambiado de Java a C # & .NET y todavía no he progresado.

Ahora estoy buscando ayuda directa. Fragmentos de código. Tutoriales. Cualquier cosa. Para que pueda realizar esta tarea. Soy nuevo en .NET pero estoy acostumbrado a Java y C / C ++, por lo que no espero que me confunda el código demasiado trivial.

Mi solicitud exacta es poder iniciar sesión con Twitter, guardar credenciales (o el token de acceso del usuario, lo que sea) y publicar un tweet.

Este es un ejemplo básico de cómo autenticar y recuperar la línea de tiempo de un usuario:

 // You need to set your own keys and screen name var oAuthConsumerKey = "superSecretKey"; var oAuthConsumerSecret = "superSecretSecret"; var oAuthUrl = "https://api.twitter.com/oauth2/token"; var screenname = "aScreenName"; // Do the Authenticate var authHeaderFormat = "Basic {0}"; var authHeader = string.Format(authHeaderFormat, Convert.ToBase64String(Encoding.UTF8.GetBytes(Uri.EscapeDataString(oAuthConsumerKey) + ":" + Uri.EscapeDataString((oAuthConsumerSecret))) )); var postBody = "grant_type=client_credentials"; HttpWebRequest authRequest = (HttpWebRequest)WebRequest.Create(oAuthUrl); authRequest.Headers.Add("Authorization", authHeader); authRequest.Method = "POST"; authRequest.ContentType = "application/x-www-form-urlencoded;charset=UTF-8"; authRequest.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate; using (Stream stream = authRequest.GetRequestStream()) { byte[] content = ASCIIEncoding.ASCII.GetBytes(postBody); stream.Write(content, 0, content.Length); } authRequest.Headers.Add("Accept-Encoding", "gzip"); WebResponse authResponse = authRequest.GetResponse(); // deserialize into an object TwitAuthenticateResponse twitAuthResponse; using (authResponse) { using (var reader = new StreamReader(authResponse.GetResponseStream())) { JavaScriptSerializer js = new JavaScriptSerializer(); var objectText = reader.ReadToEnd(); twitAuthResponse = JsonConvert.DeserializeObject(objectText); } } // Do the timeline var timelineFormat = "https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name={0}&include_rts=1&exclude_replies=1&count=5"; var timelineUrl = string.Format(timelineFormat, screenname); HttpWebRequest timeLineRequest = (HttpWebRequest)WebRequest.Create(timelineUrl); var timelineHeaderFormat = "{0} {1}"; timeLineRequest.Headers.Add("Authorization", string.Format(timelineHeaderFormat, twitAuthResponse.token_type, twitAuthResponse.access_token)); timeLineRequest.Method = "Get"; WebResponse timeLineResponse = timeLineRequest.GetResponse(); var timeLineJson = string.Empty; using (timeLineResponse) { using (var reader = new StreamReader(timeLineResponse.GetResponseStream())) { timeLineJson = reader.ReadToEnd(); } } public class TwitAuthenticateResponse { public string token_type { get; set; } public string access_token { get; set; } } 

Por favor vea aquí (el proyecto github tiene ejemplos de asp.net y asp.net mvc):

Autentíquese y solicite el cronogtwig de un usuario con Twitter API 1.1 oAuth

Creé un proyecto de código abierto para él, pero lamentablemente todavía no incluye la capacidad de enviar tweets. No creo que sea difícil, pero estoy corto de tiempo en este momento.

Si tuviera que implementarlo, descubriría exactamente qué debe publicar la API, como se detalla aquí:

https://dev.twitter.com/docs/api/1.1/post/statuses/update

Para ayudar a otras personas que han caído en la misma brecha que yo … Echa un vistazo a este sitio

Ayudará con la autenticación, el inicio de sesión y la recuperación de información básica.