Nach dem Graben durch die Quelle von TweetSharp ein bisschen, habe ich ziemlich in der Schicht auf Schicht auf Schicht verloren ... wie der Versuch, eine finden Nadel in 20 Heuhaufen. Ich schätze die Verbindung zu Twetinvi Linvi, aber ich beschloss, heute Abend ein bißchen zu trainieren und zu sehen, ob ich es von Grund auf neu schreiben könnte.
Ich verbrachte einige Zeit damit, über das zu schauen, was ich auf Twitter finden konnte und die Art, wie sie es tun, ist OAuth mehr als funky. Ich habe dann eine PHP-Lösung gefunden, die das OAuth behandelt und es ein wenig optimiert hat, damit es die E-Mail-Adresse zurückgibt. Auf diese Weise übersetzte ich das PHP in C# und habe alles in meiner eigenen, selbstgebackenen Lösung umgesetzt.
Ich habe gerade gebucht meine Arbeitslösung hier: http://www.burritostand.com/log-in-to-twitter-with-oauth-and-c-sharp-and-get-twitter-user-email
Es braucht einige große Refactoring es eine produktionstaugliche Umsetzung zu machen, aber ich dachte, es für andere nützlich sein könnte, wie es die verschiedenen Prozesse ziemlich deutlich nach unten bricht. Hoffentlich kann jemand anderes davon Gebrauch machen.
Das kritische Stück (zum Abrufen der E-Mail) in der TwitterClient Klasse, in der Parameterliste:
TwitterUrls TwitterUrls = new TwitterUrls("https://api.twitter.com/1.1/account/verify_credentials.json");
List<KeyValuePair<string, string>> Parameters = new List<KeyValuePair<string, string>>();
Parameters.Add(new KeyValuePair<string, string>("include_email", "true")); // this is the important part for getting the email returned
Parameters.Add(new KeyValuePair<string, string>("oauth_consumer_key", ConsumerKey));
Parameters.Add(new KeyValuePair<string, string>("oauth_nonce", Nonce));
Parameters.Add(new KeyValuePair<string, string>("oauth_signature_method", "HMAC-SHA1"));
Parameters.Add(new KeyValuePair<string, string>("oauth_timestamp", timestamp));
Parameters.Add(new KeyValuePair<string, string>("oauth_token", dict["oauth_token"]));
Parameters.Add(new KeyValuePair<string, string>("oauth_version", OAuthVersion));
ich die Antworten zu schätzen und ich PHP etwas Spaß habe heute Nacht zurück ... gewesen eine laaaaange Zeit :)