2016-06-10 11 views
1

Ich habe meine App auf Twitter jetzt Whitelist, um ihre E-Mail-Adresse zu erhalten, wenn sie sich einloggen und ich benutze TweetSharp als meine Bibliothek, um Benutzer zu authentifizieren, aber ich nicht ' t einen Weg finden, den Parameter zu übergeben, um seine E-Mail-Adresse unter Verwendung dieser Bibliothek anzufordern. Ich weiß, dass es eine alte Bibliothek ist und ich denke, dass die E-Mail des anfragenden Benutzers relativ neu ist. Vielleicht ist es einfach nicht möglich, die Quelle zu durchsuchen, sie zu aktualisieren und die Assembly neu zu kompilieren.Holen Sie sich die E-Mail-Adresse des Benutzers von Twitter mit C# und OAuth

Wenn jemand dies mit TweetSharp erreichen konnte, lass es mich wissen.

TIA

Antwort

2

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 :)

1

Tweetinvi unterstützt E-Mail.

var authenticatedUser = User.GetAuthenticatedUser(); 
var email = authenticatedUser.Email; 

Sie können das Projekt auf Github finden Sie hier: https://github.com/linvi/tweetinvi