{"id":322,"date":"2010-09-12T09:29:35","date_gmt":"2010-09-12T09:29:35","guid":{"rendered":"http:\/\/frank-it-beratung.com\/?p=322"},"modified":"2012-09-29T11:07:05","modified_gmt":"2012-09-29T11:07:05","slug":"twitter-mit-oauth-statt-basic-auth-dotnet-csharp","status":"publish","type":"post","link":"https:\/\/frank-it-projekte.de\/blog\/2010\/09\/12\/twitter-mit-oauth-statt-basic-auth-dotnet-csharp\/","title":{"rendered":"Twitter mit OAuth statt Basic Auth mit C# und .Net \u2013 Ein kurzes Tutorial"},"content":{"rendered":"<p>Nachdem Ende August 2010 das Team von Twitter nun endg\u00fcltig den Basic Auth Zugang abgestellt hat ist man gezwungen, Tools und Scripte entsprechend anzupassen. Vor einigen Tagen hatte ich dazu ein kurzes Tutorial geschrieben, wie man <a href=\"http:\/\/frank-it-beratung.com\/2010\/09\/02\/umstellung-von-basic-auth-zu-oauth-fur-in-perl-geschriebene-twitter-tools\/\">Perl-Scripts f\u00fcr Twitter auf OAuth umstellt<\/a>. Heute folgt wie versprochen nun noch das Beispiel f\u00fcr .net mit C#, das damit das Tutorial \u201e<a href=\"http:\/\/frank-it-beratung.com\/2010\/06\/28\/tweets-via-twitter-api-mit-c-versenden\/\">Twitter mit C#<\/a>\u201c aktualisiert.<\/p>\n<p>Auch hier gilt: Eine \u00a0komplette Umstellung auf OAuth ist eine aufwendige Sache. Im Folgenden wird nur ein schneller und einfacher Weg beschrieben, der erkl\u00e4rt, wie man einfache Scripts, die von einem Twitter-Account \u201ebenutzt\u201c werden, mit OAuth versorgt. Bei komplexeren Angelegenheiten empfiehlt es sich m\u00f6glicherweise, fertige Bibliotheken zu nutzen (vgl. dazu die Links auf den <a href=\"http:\/\/dev.twitter.com\/doc\" target=\"_blank\">Twitter-Dev Doku-Seiten<\/a>).<\/p>\n<p><!--more-->Als erstes m\u00fcssen Sie Ihr \u201eapplication\u201c bei Twitter registrieren:<\/p>\n<p>1. Surfen Sie auf <a href=\"http:\/\/dev.twitter.com\/\">http:\/\/dev.twitter.com<\/a><\/p>\n<p>2. Loggen Sie sich mit dem Twitter-Account ein, mit dessen Account sp\u00e4ter auch das Script ausgef\u00fchrt werden sollen. (Wenn Sie also ein Script schreiben, das direct messages von \u201epeter_panter\u201c an dessen Follower senden soll, loggen Sie sich als \u201epeter_panter\u201c ein).<\/p>\n<p>3. F\u00fcllen Sie das Registrierungs-Formular aus. Application-Type: Client und Read&amp;Write ausw\u00e4hlen (kann ggf. sp\u00e4ter noch ge\u00e4ndert werden, vgl unten).<\/p>\n<p>4. Jetzt erhalten Sie den Consumer Key und das Consumer Secret (dies sind die Zugangsschl\u00fcssel f\u00fcr die Anwendung, die\u00a0 sich nicht \u00e4ndern w\u00fcrden, wenn Sie einen anderen Benutzer das Script ausf\u00fchren lassen \u2013 in unserem Fall: W\u00fcrden Sie das Script so \u00e4ndern, dass nicht \u201epeter_panter\u201c sondern \u201etheo_tiger\u201c direct messages versenden soll w\u00fcrde sich der Consumer Key und das Consumer Secret nicht \u00e4ndern).<\/p>\n<p>5. Klicken Sie auf \u201eMy Access Token\u201c. Dann erhalten Sie das Access Token sowie das Access Token Secret f\u00fcr den aktuell eingeloggten User (in unseren Beispiel \u201epeter_panter\u201c. W\u00fcrde Sie das Script so \u00e4ndern, dass \u201etheo_tiger\u201c direct messages versenden soll m\u00fcssen Sie dessen Access Token und Access Token Secret generieren \u2013 dies ginge nicht so einfach mit dev.twitter.com &#8211; man m\u00fcsste dann oAuth komplett implementieren).<\/p>\n<p>Nachdem Sie nun die vier Keys haben kann es in C# losgehen. Im folgenden Beispiel verwende ich Visual C# 2008 Express, mit anderen Versionen m\u00fcsste dies \u00e4hnlich zu realisieren sein.<\/p>\n<p>6. F\u00fcr die Signatur verwende ich die einfache und deshalb leicht zu benutzende C#-Klasse OAuthBase, die <a href=\"http:\/\/eran.sandler.co.il\/\" target=\"_blank\">Eran Sandler<\/a> dankenswerterweise erstellt hat und die auch auf der offiziellen <a href=\"http:\/\/oauth.net\/code\/\" target=\"_blank\">OAuth Homepage<\/a> empfohlen wird (Download bei <a href=\"http:\/\/oauth.googlecode.com\/svn\/code\/csharp\/OAuthBase.cs\" target=\"_blank\">googlecode<\/a>).<\/p>\n<p>7. Ausgangspunkt ist das Projekt \u201e<a href=\"http:\/\/frank-it-beratung.com\/2010\/06\/28\/tweets-via-twitter-api-mit-c-versenden\/\">TwitterTutorial<\/a>\u201c, das ich vor einigen Wochen in diesem Blog ver\u00f6ffentlicht hatte. Dieses erweitere ich nun um eine Schaltfl\u00e4che \u201eTweet mit OAuth senden\u201c (tats\u00e4chlich k\u00f6nnen Sie die alte Taste \u201eTweet mit Basic Auth senden\u201c l\u00f6schen, diese funktioniert seit 1. September 2010 durch die Umstellung der Twitter-API nicht mehr).<\/p>\n<p><a href=\"http:\/\/frank-it-beratung.de\/blog\/wp-content\/uploads\/2010\/09\/screenshot-twitter-csharp.jpg\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"325\" data-permalink=\"https:\/\/frank-it-projekte.de\/blog\/2010\/09\/12\/twitter-mit-oauth-statt-basic-auth-dotnet-csharp\/screenshot-twitter-csharp\/\" data-orig-file=\"https:\/\/frank-it-projekte.de\/blog\/wp-content\/uploads\/2010\/09\/screenshot-twitter-csharp.jpg\" data-orig-size=\"708,290\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}\" data-image-title=\"Twitter mit C# und OAuth\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/frank-it-projekte.de\/blog\/wp-content\/uploads\/2010\/09\/screenshot-twitter-csharp.jpg\" class=\"alignnone size-full wp-image-325\" title=\"Twitter mit C# und OAuth\" src=\"http:\/\/frank-it-beratung.de\/blog\/wp-content\/uploads\/2010\/09\/screenshot-twitter-csharp.jpg\" alt=\"\" width=\"600\" height=\"245\" srcset=\"https:\/\/frank-it-projekte.de\/blog\/wp-content\/uploads\/2010\/09\/screenshot-twitter-csharp.jpg 708w, https:\/\/frank-it-projekte.de\/blog\/wp-content\/uploads\/2010\/09\/screenshot-twitter-csharp-300x122.jpg 300w, https:\/\/frank-it-projekte.de\/blog\/wp-content\/uploads\/2010\/09\/screenshot-twitter-csharp-500x204.jpg 500w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><\/p>\n<p>8. So sieht nun der Code aus:<\/p>\n<pre>\/\/ f\u00fcr WebClient\r\nWebClient myWebClient = new WebClient();\r\nByte[] req, Antwort;\r\n\r\n\/\/ oAuth\r\nOAuthBase oAuth = new OAuthBase();\r\n\r\n\/\/ Except100 ausschalten, sonst gibt es u. U. Fehlermeldungen\r\nSystem.Net.ServicePointManager.Expect100Continue = false;\r\n\r\n\/\/ F\u00fcr direct message werden die Parameter user (Empf\u00e4nger)\r\n\/\/ und  text (Nachricht) ben\u00f6tigt\r\nString TwitterReqParameters = \"user=Simon_A_Frank\";\r\n\r\n\/ F\u00fcr direct message werden die Parameter text (Nachricht)\r\n\/\/ und user (Empf\u00e4nger) ben\u00f6tigt\r\nString TwitterReqParameters = \"user=Simon_A_Frank\";\r\nTwitterReqParameters += \"&amp;text=\"\r\n + HttpUtility.UrlPathEncode(txtTweet.Text.ToString());\r\n\/\/ UrlEncode hilft leider nicht, UrlPathEncode hilft ein\r\n\/\/ wenig, aber es gibt noch Probleme mit Umlauten und Sonderzeichen\r\n\/\/ (vgl. Anmerkungen unten)\r\n\r\n\/\/ die OAuth ReqParameters \u2013 sind noch leer, werden unten generiert\r\nString OAuthReqParameters = \"\";\r\n\r\n\/\/ Sonstige Einstellungen\r\nString RequestMethod = \"POST\";\r\n\r\n\/\/die Tokens und Keys\r\nString AccessToken = \"???\";\r\nString AccessSecret = \"???\";\r\nString ConsumerKey = \"???\";\r\nString ConsumerSecret = \"???\";\r\n\r\n\/\/ Zeit und Nonce lassen sich mit Hilfe von OAuthBase einfach generieren\r\nString Nonce = oAuth.GenerateNonce();\r\nString Zeitstempel = oAuth.GenerateTimeStamp();\r\n\r\n\/\/ Die URL muss mit Parametern (auch bei POST!) als String und\r\n\/\/ URI vorligen \u2013 etwas verwirrend, aber so will es OAuthBase\r\nString APIUrl = \"https:\/\/twitter.com\/direct_messages\/new.xml\"\r\n  + \"?\" + TwitterReqParameters;\r\nUri APIUri = new Uri(APIUrl);\r\n\r\n\/\/ Zum Test k\u00f6nnen Sie vorher und nacher die Parameters ausgeben:\r\nConsole.WriteLine(\"OAuthReqParameters \u2013 noch leer: \" + OAuthReqParameters);\r\n\r\n\/\/ Jetzt die Signature generieren\r\n\/\/ au\u00dferdem wird hier die APIUrl normalisiert\r\n\/\/ und OAuthReqParameters generiert\r\nString signature = oAuth.GenerateSignature(APIUri, ConsumerKey,\r\n ConsumerSecret, AccessToken, AccessSecret, RequestMethod,\r\n Zeitstempel, Nonce, out APIUrl, out OAuthReqParameters);\r\nConsole.WriteLine(\"OAuthReqParameters \u2013 mit oauth_ Parameters: \"\r\n + OAuthReqParameters);\r\n\r\n\/\/ die Signatur fehlt noch im vorbereiteten Request\r\nOAuthReqParameters = OAuthReqParameters + \"&amp;\"\r\n + \"oauth_signature=\" + signature;\r\nConsole.WriteLine(\"OAuthReqParameters \u2013 mit Signatur: \"\r\n + OAuthReqParameters);\r\n\r\n\/\/ Jetzt in byte[] umwandeln:\r\nreq = Encoding.UTF8.GetBytes(OAuthReqParameters);\r\n\r\n\/\/ Senden\r\ntry\r\n{\r\n  Antwort = myWebClient.UploadData(APIUrl,\"POST\", req);\r\n  \/\/Die Antwort von Twitter ausgeben (XML-Daten):\r\n  MessageBox.Show(System.Text.Encoding.ASCII.GetString(Antwort));\r\n}\r\ncatch (Exception ex)\r\n{\r\n  \/\/Wenn es nicht klappt Fehler ausgeben\r\n  MessageBox.Show(ex.Message);\r\n}<\/pre>\n<p>Noch ein paar Anmerkungen:<\/p>\n<ul>\n<li>Leider gehen weder Umlaute noch Sonderzeichen &#8211; hier hatte ich noch keine z\u00fcndende Idee. Auch in OAuthBase wurde hier &#8222;rumgebastelt&#8220; &#8211; jedoch funktioniert OAuthBase.UrlEncode f\u00fcr Twitter auch nicht. Vielleicht hat jemand hier noch eine gute Idee? (Update 4. November 2010: Jetzt ist das Problem gel\u00f6st, Details finden Sie <a href=\"http:\/\/frank-it-beratung.com\/2010\/11\/04\/twitter-mit-oauth-und-c-so-gehts-auch-mit-umlauten-und-sonderzeichen\/\">hier<\/a>).<\/li>\n<li>Wenn Sie keine direct message sondern ein Update senden m\u00f6chten sind folgende zwei \u00c4nderungen notwendig:<br \/>\nString TwitterReqParameters = &#8222;update=Hallo Welt, dies ist mein Update&#8220;;<br \/>\nString APIUrl = &#8220; https:\/\/twitter.com\/statuses\/update.xml &#8220; + &#8222;?&#8220; + TwitterReqParameters;<\/li>\n<li>Wenn Sie bei der Registrierung der App nur \u201eRead\u201c ausw\u00e4hlen wird der falsche Access Token generiert bzw. mit dem Token kann man nur Lesen \u2013 auch wenn man das sp\u00e4ter umstellt; entfernen Sie die Verbindung der Anwendung zu dem Account und stellen Sie diese wieder her; mit dem neuen Token geht es dann.<\/li>\n<\/ul>\n<p>P.S.<\/p>\n<p>Probleme? Fragen? Anregungen? Ich helfe jederzeit und gerne\u00a0 &#8211; einfach einen Kommentar oder Mail schreiben, die Antwort kommt schnellstm\u00f6glich. Unternehmen, die Unterst\u00fctzung, Beratung oder Schulung bei der API- oder Webprogrammierung, der Social-Media-Entwicklung oder dem Social-Media-Management ben\u00f6tigen finden zudem entsprechende Angebote meiner Firma auf der Website <a href=\"http:\/\/www.Frank-IT-Beratung.de\" target=\"_blank\">www.Frank-IT-Beratung.de<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nachdem Ende August 2010 das Team von Twitter nun endg\u00fcltig den Basic Auth Zugang abgestellt hat ist man gezwungen, Tools und Scripte entsprechend anzupassen. Vor einigen Tagen hatte ich dazu ein kurzes Tutorial geschrieben, wie man Perl-Scripts f\u00fcr Twitter auf &hellip; <a href=\"https:\/\/frank-it-projekte.de\/blog\/2010\/09\/12\/twitter-mit-oauth-statt-basic-auth-dotnet-csharp\/\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[5,16,20],"tags":[23,72,46,83,50,51],"class_list":["post-322","post","type-post","status-publish","format-standard","hentry","category-c","category-programmierung","category-twitter","tag-net","tag-c","tag-oauth","tag-twitter","tag-twitter-api","tag-twitter-c"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Twitter mit OAuth statt Basic Auth mit C# und .Net \u2013 Ein kurzes Tutorial - Socialweb Dev-Blog \/\/ Frank-IT-Beratung<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/frank-it-projekte.de\/blog\/2010\/09\/12\/twitter-mit-oauth-statt-basic-auth-dotnet-csharp\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Twitter mit OAuth statt Basic Auth mit C# und .Net \u2013 Ein kurzes Tutorial - Socialweb Dev-Blog \/\/ Frank-IT-Beratung\" \/>\n<meta property=\"og:description\" content=\"Nachdem Ende August 2010 das Team von Twitter nun endg\u00fcltig den Basic Auth Zugang abgestellt hat ist man gezwungen, Tools und Scripte entsprechend anzupassen. Vor einigen Tagen hatte ich dazu ein kurzes Tutorial geschrieben, wie man Perl-Scripts f\u00fcr Twitter auf &hellip; Weiterlesen &rarr;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/frank-it-projekte.de\/blog\/2010\/09\/12\/twitter-mit-oauth-statt-basic-auth-dotnet-csharp\/\" \/>\n<meta property=\"og:site_name\" content=\"Socialweb Dev-Blog \/\/ Frank-IT-Beratung\" \/>\n<meta property=\"article:published_time\" content=\"2010-09-12T09:29:35+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2012-09-29T11:07:05+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/frank-it-beratung.de\/blog\/wp-content\/uploads\/2010\/09\/screenshot-twitter-csharp.jpg\" \/>\n<meta name=\"author\" content=\"Simon A. Frank\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Simon A. Frank\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"5\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/frank-it-projekte.de\\\/blog\\\/2010\\\/09\\\/12\\\/twitter-mit-oauth-statt-basic-auth-dotnet-csharp\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/frank-it-projekte.de\\\/blog\\\/2010\\\/09\\\/12\\\/twitter-mit-oauth-statt-basic-auth-dotnet-csharp\\\/\"},\"author\":{\"name\":\"Simon A. Frank\",\"@id\":\"https:\\\/\\\/frank-it-projekte.de\\\/blog\\\/#\\\/schema\\\/person\\\/e31d0c55b9277739ef6c87d5e7bb47a2\"},\"headline\":\"Twitter mit OAuth statt Basic Auth mit C# und .Net \u2013 Ein kurzes Tutorial\",\"datePublished\":\"2010-09-12T09:29:35+00:00\",\"dateModified\":\"2012-09-29T11:07:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/frank-it-projekte.de\\\/blog\\\/2010\\\/09\\\/12\\\/twitter-mit-oauth-statt-basic-auth-dotnet-csharp\\\/\"},\"wordCount\":678,\"commentCount\":9,\"publisher\":{\"@id\":\"https:\\\/\\\/frank-it-projekte.de\\\/blog\\\/#\\\/schema\\\/person\\\/e31d0c55b9277739ef6c87d5e7bb47a2\"},\"image\":{\"@id\":\"https:\\\/\\\/frank-it-projekte.de\\\/blog\\\/2010\\\/09\\\/12\\\/twitter-mit-oauth-statt-basic-auth-dotnet-csharp\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/frank-it-beratung.de\\\/blog\\\/wp-content\\\/uploads\\\/2010\\\/09\\\/screenshot-twitter-csharp.jpg\",\"keywords\":[\".net\",\"C#\",\"OAuth\",\"Twitter\",\"Twitter API\",\"Twitter C#\"],\"articleSection\":[\"C#\",\"Programmierung\",\"Twitter\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/frank-it-projekte.de\\\/blog\\\/2010\\\/09\\\/12\\\/twitter-mit-oauth-statt-basic-auth-dotnet-csharp\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/frank-it-projekte.de\\\/blog\\\/2010\\\/09\\\/12\\\/twitter-mit-oauth-statt-basic-auth-dotnet-csharp\\\/\",\"url\":\"https:\\\/\\\/frank-it-projekte.de\\\/blog\\\/2010\\\/09\\\/12\\\/twitter-mit-oauth-statt-basic-auth-dotnet-csharp\\\/\",\"name\":\"Twitter mit OAuth statt Basic Auth mit C# und .Net \u2013 Ein kurzes Tutorial - Socialweb Dev-Blog \\\/\\\/ Frank-IT-Beratung\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/frank-it-projekte.de\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/frank-it-projekte.de\\\/blog\\\/2010\\\/09\\\/12\\\/twitter-mit-oauth-statt-basic-auth-dotnet-csharp\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/frank-it-projekte.de\\\/blog\\\/2010\\\/09\\\/12\\\/twitter-mit-oauth-statt-basic-auth-dotnet-csharp\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/frank-it-beratung.de\\\/blog\\\/wp-content\\\/uploads\\\/2010\\\/09\\\/screenshot-twitter-csharp.jpg\",\"datePublished\":\"2010-09-12T09:29:35+00:00\",\"dateModified\":\"2012-09-29T11:07:05+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/frank-it-projekte.de\\\/blog\\\/2010\\\/09\\\/12\\\/twitter-mit-oauth-statt-basic-auth-dotnet-csharp\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/frank-it-projekte.de\\\/blog\\\/2010\\\/09\\\/12\\\/twitter-mit-oauth-statt-basic-auth-dotnet-csharp\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/frank-it-projekte.de\\\/blog\\\/2010\\\/09\\\/12\\\/twitter-mit-oauth-statt-basic-auth-dotnet-csharp\\\/#primaryimage\",\"url\":\"http:\\\/\\\/frank-it-beratung.de\\\/blog\\\/wp-content\\\/uploads\\\/2010\\\/09\\\/screenshot-twitter-csharp.jpg\",\"contentUrl\":\"http:\\\/\\\/frank-it-beratung.de\\\/blog\\\/wp-content\\\/uploads\\\/2010\\\/09\\\/screenshot-twitter-csharp.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/frank-it-projekte.de\\\/blog\\\/2010\\\/09\\\/12\\\/twitter-mit-oauth-statt-basic-auth-dotnet-csharp\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\\\/\\\/frank-it-projekte.de\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Twitter mit OAuth statt Basic Auth mit C# und .Net \u2013 Ein kurzes Tutorial\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/frank-it-projekte.de\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/frank-it-projekte.de\\\/blog\\\/\",\"name\":\"Socialweb Dev-Blog \\\/\\\/ Frank-IT-Beratung\",\"description\":\"Social-Media und Web-Entwicklung: Tutorials und Tipps von Simon A. Frank\",\"publisher\":{\"@id\":\"https:\\\/\\\/frank-it-projekte.de\\\/blog\\\/#\\\/schema\\\/person\\\/e31d0c55b9277739ef6c87d5e7bb47a2\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/frank-it-projekte.de\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/frank-it-projekte.de\\\/blog\\\/#\\\/schema\\\/person\\\/e31d0c55b9277739ef6c87d5e7bb47a2\",\"name\":\"Simon A. Frank\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/frank-it-beratung.de\\\/blog\\\/wp-content\\\/uploads\\\/2009\\\/09\\\/simon200x200.jpg\",\"url\":\"https:\\\/\\\/frank-it-beratung.de\\\/blog\\\/wp-content\\\/uploads\\\/2009\\\/09\\\/simon200x200.jpg\",\"contentUrl\":\"https:\\\/\\\/frank-it-beratung.de\\\/blog\\\/wp-content\\\/uploads\\\/2009\\\/09\\\/simon200x200.jpg\",\"width\":200,\"height\":200,\"caption\":\"Simon A. Frank\"},\"logo\":{\"@id\":\"https:\\\/\\\/frank-it-beratung.de\\\/blog\\\/wp-content\\\/uploads\\\/2009\\\/09\\\/simon200x200.jpg\"},\"url\":\"https:\\\/\\\/frank-it-projekte.de\\\/blog\\\/author\\\/sfrank\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Twitter mit OAuth statt Basic Auth mit C# und .Net \u2013 Ein kurzes Tutorial - Socialweb Dev-Blog \/\/ Frank-IT-Beratung","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/frank-it-projekte.de\/blog\/2010\/09\/12\/twitter-mit-oauth-statt-basic-auth-dotnet-csharp\/","og_locale":"de_DE","og_type":"article","og_title":"Twitter mit OAuth statt Basic Auth mit C# und .Net \u2013 Ein kurzes Tutorial - Socialweb Dev-Blog \/\/ Frank-IT-Beratung","og_description":"Nachdem Ende August 2010 das Team von Twitter nun endg\u00fcltig den Basic Auth Zugang abgestellt hat ist man gezwungen, Tools und Scripte entsprechend anzupassen. Vor einigen Tagen hatte ich dazu ein kurzes Tutorial geschrieben, wie man Perl-Scripts f\u00fcr Twitter auf &hellip; Weiterlesen &rarr;","og_url":"https:\/\/frank-it-projekte.de\/blog\/2010\/09\/12\/twitter-mit-oauth-statt-basic-auth-dotnet-csharp\/","og_site_name":"Socialweb Dev-Blog \/\/ Frank-IT-Beratung","article_published_time":"2010-09-12T09:29:35+00:00","article_modified_time":"2012-09-29T11:07:05+00:00","og_image":[{"url":"http:\/\/frank-it-beratung.de\/blog\/wp-content\/uploads\/2010\/09\/screenshot-twitter-csharp.jpg","type":"","width":"","height":""}],"author":"Simon A. Frank","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Simon A. Frank","Gesch\u00e4tzte Lesezeit":"5\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/frank-it-projekte.de\/blog\/2010\/09\/12\/twitter-mit-oauth-statt-basic-auth-dotnet-csharp\/#article","isPartOf":{"@id":"https:\/\/frank-it-projekte.de\/blog\/2010\/09\/12\/twitter-mit-oauth-statt-basic-auth-dotnet-csharp\/"},"author":{"name":"Simon A. Frank","@id":"https:\/\/frank-it-projekte.de\/blog\/#\/schema\/person\/e31d0c55b9277739ef6c87d5e7bb47a2"},"headline":"Twitter mit OAuth statt Basic Auth mit C# und .Net \u2013 Ein kurzes Tutorial","datePublished":"2010-09-12T09:29:35+00:00","dateModified":"2012-09-29T11:07:05+00:00","mainEntityOfPage":{"@id":"https:\/\/frank-it-projekte.de\/blog\/2010\/09\/12\/twitter-mit-oauth-statt-basic-auth-dotnet-csharp\/"},"wordCount":678,"commentCount":9,"publisher":{"@id":"https:\/\/frank-it-projekte.de\/blog\/#\/schema\/person\/e31d0c55b9277739ef6c87d5e7bb47a2"},"image":{"@id":"https:\/\/frank-it-projekte.de\/blog\/2010\/09\/12\/twitter-mit-oauth-statt-basic-auth-dotnet-csharp\/#primaryimage"},"thumbnailUrl":"http:\/\/frank-it-beratung.de\/blog\/wp-content\/uploads\/2010\/09\/screenshot-twitter-csharp.jpg","keywords":[".net","C#","OAuth","Twitter","Twitter API","Twitter C#"],"articleSection":["C#","Programmierung","Twitter"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/frank-it-projekte.de\/blog\/2010\/09\/12\/twitter-mit-oauth-statt-basic-auth-dotnet-csharp\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/frank-it-projekte.de\/blog\/2010\/09\/12\/twitter-mit-oauth-statt-basic-auth-dotnet-csharp\/","url":"https:\/\/frank-it-projekte.de\/blog\/2010\/09\/12\/twitter-mit-oauth-statt-basic-auth-dotnet-csharp\/","name":"Twitter mit OAuth statt Basic Auth mit C# und .Net \u2013 Ein kurzes Tutorial - Socialweb Dev-Blog \/\/ Frank-IT-Beratung","isPartOf":{"@id":"https:\/\/frank-it-projekte.de\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/frank-it-projekte.de\/blog\/2010\/09\/12\/twitter-mit-oauth-statt-basic-auth-dotnet-csharp\/#primaryimage"},"image":{"@id":"https:\/\/frank-it-projekte.de\/blog\/2010\/09\/12\/twitter-mit-oauth-statt-basic-auth-dotnet-csharp\/#primaryimage"},"thumbnailUrl":"http:\/\/frank-it-beratung.de\/blog\/wp-content\/uploads\/2010\/09\/screenshot-twitter-csharp.jpg","datePublished":"2010-09-12T09:29:35+00:00","dateModified":"2012-09-29T11:07:05+00:00","breadcrumb":{"@id":"https:\/\/frank-it-projekte.de\/blog\/2010\/09\/12\/twitter-mit-oauth-statt-basic-auth-dotnet-csharp\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/frank-it-projekte.de\/blog\/2010\/09\/12\/twitter-mit-oauth-statt-basic-auth-dotnet-csharp\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/frank-it-projekte.de\/blog\/2010\/09\/12\/twitter-mit-oauth-statt-basic-auth-dotnet-csharp\/#primaryimage","url":"http:\/\/frank-it-beratung.de\/blog\/wp-content\/uploads\/2010\/09\/screenshot-twitter-csharp.jpg","contentUrl":"http:\/\/frank-it-beratung.de\/blog\/wp-content\/uploads\/2010\/09\/screenshot-twitter-csharp.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/frank-it-projekte.de\/blog\/2010\/09\/12\/twitter-mit-oauth-statt-basic-auth-dotnet-csharp\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/frank-it-projekte.de\/blog\/"},{"@type":"ListItem","position":2,"name":"Twitter mit OAuth statt Basic Auth mit C# und .Net \u2013 Ein kurzes Tutorial"}]},{"@type":"WebSite","@id":"https:\/\/frank-it-projekte.de\/blog\/#website","url":"https:\/\/frank-it-projekte.de\/blog\/","name":"Socialweb Dev-Blog \/\/ Frank-IT-Beratung","description":"Social-Media und Web-Entwicklung: Tutorials und Tipps von Simon A. Frank","publisher":{"@id":"https:\/\/frank-it-projekte.de\/blog\/#\/schema\/person\/e31d0c55b9277739ef6c87d5e7bb47a2"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/frank-it-projekte.de\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":["Person","Organization"],"@id":"https:\/\/frank-it-projekte.de\/blog\/#\/schema\/person\/e31d0c55b9277739ef6c87d5e7bb47a2","name":"Simon A. Frank","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/frank-it-beratung.de\/blog\/wp-content\/uploads\/2009\/09\/simon200x200.jpg","url":"https:\/\/frank-it-beratung.de\/blog\/wp-content\/uploads\/2009\/09\/simon200x200.jpg","contentUrl":"https:\/\/frank-it-beratung.de\/blog\/wp-content\/uploads\/2009\/09\/simon200x200.jpg","width":200,"height":200,"caption":"Simon A. Frank"},"logo":{"@id":"https:\/\/frank-it-beratung.de\/blog\/wp-content\/uploads\/2009\/09\/simon200x200.jpg"},"url":"https:\/\/frank-it-projekte.de\/blog\/author\/sfrank\/"}]}},"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p2dxcw-5c","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/frank-it-projekte.de\/blog\/wp-json\/wp\/v2\/posts\/322","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/frank-it-projekte.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/frank-it-projekte.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/frank-it-projekte.de\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/frank-it-projekte.de\/blog\/wp-json\/wp\/v2\/comments?post=322"}],"version-history":[{"count":1,"href":"https:\/\/frank-it-projekte.de\/blog\/wp-json\/wp\/v2\/posts\/322\/revisions"}],"predecessor-version":[{"id":928,"href":"https:\/\/frank-it-projekte.de\/blog\/wp-json\/wp\/v2\/posts\/322\/revisions\/928"}],"wp:attachment":[{"href":"https:\/\/frank-it-projekte.de\/blog\/wp-json\/wp\/v2\/media?parent=322"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/frank-it-projekte.de\/blog\/wp-json\/wp\/v2\/categories?post=322"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/frank-it-projekte.de\/blog\/wp-json\/wp\/v2\/tags?post=322"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}