{"id":567,"date":"2011-03-26T17:57:50","date_gmt":"2011-03-26T17:57:50","guid":{"rendered":"http:\/\/frank-it-beratung.com\/?p=567"},"modified":"2012-09-29T11:03:54","modified_gmt":"2012-09-29T11:03:54","slug":"tutorial-die-friendfeed-api-mit-c-oder-visual-basic","status":"publish","type":"post","link":"https:\/\/frank-it-projekte.de\/blog\/2011\/03\/26\/tutorial-die-friendfeed-api-mit-c-oder-visual-basic\/","title":{"rendered":"Tutorial: Die FriendFeed API mit C# (oder Visual Basic)"},"content":{"rendered":"<p>Nach den vielen Tutorials zu Facebook heute mal etwas zu dem m. E. vielfach untersch\u00e4tzten Dienst <a href=\"http:\/\/www.FriendFeed.com\">FriendFeed<\/a>.\u00a0Dessen API ist eine feine Sache, da zum einen der Zugriff trotz OAuth relativ unkompliziert ist (es gibt sogar noch einen Basic Auth Zugang, der aber in K\u00fcrze abgestellt werden soll und deshalb hier keine Erw\u00e4hnung findet). Zum anderen hat man via FriendFeed Zugriff auf\u00a0knapp 60 Social Networks, kann also auf diesem Wege sozsuagen mit einer Schnittstelle sehr viel erreichen \u2013 z. B. Flickr, delicious, Digg, Mixx, Last.fm, YouTube uvm.<\/p>\n<p>Als ich f\u00fcr ein Kundenprojekt die FriendFeed Anbindung programmiert habe bin ich fast verzweifelt. Ich habe es nicht geschafft, mit C# Daten via POST an FriendFeed zu senden\u00a0&#8211; GET war kein Problem, da aber Status Updates und Bilduploads POST erfordern\u00a0musst ich auch dies hinbekommen. Ich hatte bereits vor einiger Zeit eine FriendFeed Anbindung mit PHP realisiert und wusste, dass es eigentlich \u201eganz einfach\u201c gehen muss. Des R\u00e4tsels L\u00f6sung verrate ich unten \u2013 jetzt erstmals die Basics:<\/p>\n<p><!--more--><\/p>\n<p>1.\u00a0Als erstes muss man seine Application bei FriendFeed registrieren. Man w\u00e4hlt einen Namen und \u201eInstalled application\u201c (nicht \u201eBrowser\u201c) sowie eine \u201eFeedBack Group\u201c (bei der Nutzer der Application Fragen und Kommentare posten k\u00f6nnen). Ansonsten sind keine Einstellungen notwendig:<\/p>\n<p><a href=\"http:\/\/friendfeed.com\/api\/register\" target=\"_blank\">http:\/\/friendfeed.com\/api\/register<\/a><\/p>\n<p>2.\u00a0Nach der Registrierung erh\u00e4lt man den Consumer Key sowie das Consumer Secret.<\/p>\n<p>3.\u00a0Jetzt erstellt man folgendes Form unter C# (oder Visual Basic) \u2013 die Express Edition ist ausreichend, hier im Screenshot die 2010er Version:<\/p>\n<p><a href=\"http:\/\/frank-it-beratung.de\/blog\/wp-content\/uploads\/2011\/03\/friendfeed_mit_csharp.jpg\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"578\" data-permalink=\"https:\/\/frank-it-projekte.de\/blog\/2011\/03\/26\/tutorial-die-friendfeed-api-mit-c-oder-visual-basic\/friendfeed_mit_csharp\/\" data-orig-file=\"https:\/\/frank-it-projekte.de\/blog\/wp-content\/uploads\/2011\/03\/friendfeed_mit_csharp.jpg\" data-orig-size=\"753,399\" 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=\"FriendFeed mit C#\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/frank-it-projekte.de\/blog\/wp-content\/uploads\/2011\/03\/friendfeed_mit_csharp.jpg\" class=\"size-full wp-image-578 alignnone\" title=\"FriendFeed mit C#\" src=\"http:\/\/frank-it-beratung.de\/blog\/wp-content\/uploads\/2011\/03\/friendfeed_mit_csharp.jpg\" alt=\"\" width=\"600\" height=\"317\" srcset=\"https:\/\/frank-it-projekte.de\/blog\/wp-content\/uploads\/2011\/03\/friendfeed_mit_csharp.jpg 753w, https:\/\/frank-it-projekte.de\/blog\/wp-content\/uploads\/2011\/03\/friendfeed_mit_csharp-300x158.jpg 300w, https:\/\/frank-it-projekte.de\/blog\/wp-content\/uploads\/2011\/03\/friendfeed_mit_csharp-500x264.jpg 500w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><\/p>\n<p>4.\u00a0F\u00fcr die Authentifizierung eines Users ist es einfacher als bei vielen anderen Social Networks (siehe z. B. meine Tutorials zu <a title=\"Twitter mit OAuth statt Basic Auth mit C# und .Net \u2013 Ein kurzes\u00a0Tutorial\" href=\"http:\/\/frank-it-beratung.com\/2010\/09\/12\/twitter-mit-oauth-statt-basic-auth-dotnet-csharp\/\">Twitter<\/a> oder <a title=\"Tutorial: Ein Facebook Pinnwandeintrag mit Visual Basic oder C# (Teil\u00a01)\" href=\"http:\/\/frank-it-beratung.com\/2010\/12\/10\/tutorial-ein-facebook-pinnwandeintrag-mit-visual-basic-oder-c-teil-1\/\">Facebook<\/a>). Es ist kein interner Browser notwendig, was die Sache unkomplizierter macht (aber auch die Gefahr mit sich bringt, dass ein App-Entwickler das Passwort des Users abspeichert\u00a0&#8211; aber das ist ein anderes Thema). F\u00fcr OAuth verwende ich die Klasse, die Eran Sandler dankenswerterweise erstellt hat (siehe Download auf <a href=\"http:\/\/oauth.googlecode.com\/svn\/code\/csharp\/OAuthBase.cs\" target=\"_blank\">Google Code<\/a>). Mit folgenden Code lassen sich die Tokens f\u00fcr einen User in FriendFeed ermitteln (hier in C#, Visual Basic siehe unten):<\/p>\n<pre>\/\/WebClient anlegen\r\nWebClient myWebClient = new WebClient();\r\n\r\n\/\/oAuth anlegen\r\nOAuth.OAuthBase oAuth = new OAuth.OAuthBase();\r\n\r\n\/\/Except100 ausschalten, sonst gibt es u. U. Fehlermeldungen\r\nSystem.Net.ServicePointManager.Expect100Continue = false;\r\n\r\n\/\/ggf Umlaute in PW fixen\r\nstring[] UriRfc3986CharsToEscape = new[] { \"!\", \"*\", \"'\", \"(\", \")\" };\r\nstring Passwort=textBoxPassword.Text;\r\nStringBuilder escaped = new StringBuilder(Uri.EscapeDataString(Passwort));\r\nfor (int i = 0; i &lt; UriRfc3986CharsToEscape.Length; i++)\r\n{\r\n  escaped.Replace(UriRfc3986CharsToEscape[i],\r\n  Uri.HexEscape(UriRfc3986CharsToEscape[i][0]));\r\n}\r\nPasswort = escaped.ToString();\r\nString FFReqParameters = \"ff_username=\" + textBoxUsername.Text\r\n  + \"&amp;ff_password=\" + Passwort;\r\n\r\nString OAuthReqParameters = \"\";\r\nString RequestMethod = \"GET\";\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 - etwas verwirrend, aber so will es OAuthBAse\r\nString APIUrl = \"<a href=\"https:\/\/friendfeed.com\/account\/oauth\/ia_access_token\">https:\/\/friendfeed.com\/account\/oauth\/ia_access_token<\/a>?\"\r\n  + FFReqParameters;\r\n\r\nUri APIUri = new Uri(APIUrl);\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, ConsumerSecret,\r\n  AccessToken, AccessSecret, RequestMethod, Zeitstempel,\r\n  Nonce, out APIUrl, out OAuthReqParameters);\r\n\r\n\/\/ die Signatur fehlt noch im vorbereiteten Request\r\nOAuthReqParameters = OAuthReqParameters + \"&amp;\" + \"oauth_signature=\" + signature;\r\nstring AntwortString = \"\";\r\nByte[] Antwort;\r\n\r\n\/\/ Senden ...\r\ntry\r\n{\r\n  Antwort = myWebClient.DownloadData(\r\n    \"<a href=\"https:\/\/friendfeed.com\/account\/oauth\/ia_access_token\">https:\/\/friendfeed.com\/account\/oauth\/ia_access_token<\/a>?\"\r\n    + OAuthReqParameters);\r\n    AntwortString = System.Text.Encoding.ASCII.GetString(Antwort);\r\n  System.Windows.Forms.MessageBox.Show(AntwortString);\r\n}\r\ncatch (Exception ex)\r\n{\r\n  System.Windows.Forms.MessageBox.Show(ex.Message);\r\n  return;\r\n}\r\n\r\n\/\/Jetzt das Access-Token gan \"mnauell\" aus der Antwort filtern\r\nstring[] tokensplit = AntwortString.Split(new Char[] { '&amp;' });\r\nforeach (string s in tokensplit)\r\n{\r\n  string[] zeilesplit = s.Split(new Char[] { '=' });\r\n  if (zeilesplit[0] == \"oauth_token\")\r\n  {\r\n    textBoxAccessToken.Text = zeilesplit[1];\r\n  }\r\n  else if (zeilesplit[0] == \"oauth_token_secret\")\r\n  {\r\n    textBoxAccessTokenSecret.Text = zeilesplit[1];\r\n  }\r\n}<\/pre>\n<p>5.\u00a0Hat man die Access Tokens des Users ermittelt kann man nun beispielsweise ein Status Nachricht\u00a0 senden (was noch alles geht siehe <a href=\"http:\/\/www.FriendFeed.com\/api\/\" target=\"_blank\">offizielle Doku der API<\/a>).\u00a0 Wie oben bereits angedeutet kann man da nun verzweifeln, denn FriendFeed akzeptiert POST via C# nicht so einfach. Zuerst habe ich einen Fehler in der OAuth-Signatur vermutet, nach ausf\u00fchrlichem Test und Analyse des Netzwerkverkehrs war mir klar, dass es an dem Request-Header liegt. Hier wartet FreindFeed auf \u201eContent-type: application\/x-www-form-urlencoded&#8220;, die der .Net WebClient jedoch nicht sendet. Mit folgender Zeile war dann das Problem gel\u00f6st:<\/p>\n<pre>myWebClient.Headers.Add(\r\n\"Content-type: application\/x-www-form-urlencoded\");<\/pre>\n<p>6.\u00a0Hier nun der komplette Code:<\/p>\n<pre> \/\/WebClient anlegen\r\n WebClient myWebClient = new WebClient();\r\n\r\n \/\/Wer folgende Zeile vergisst wird verzweifeln:\r\n myWebClient.Headers.Add(\"Content-type: application\/x-www-form-urlencoded\");\r\n\r\n \/\/oAuth anlegen\r\n OAuth.OAuthBase oAuth = new OAuth.OAuthBase();\r\n\r\n \/\/Except100 ausschalten, sonst gibt es u. U. Fehlermeldungen\r\n System.Net.ServicePointManager.Expect100Continue = false;\r\n\r\n \/\/ggf Umlaute in Nachricht fixen:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\r\n string[] UriRfc3986CharsToEscape = new[] { \"!\", \"*\", \"'\", \"(\", \")\" };\r\n string Nachricht = textBoxNachricht.Text;\r\n StringBuilder escaped =\r\n new StringBuilder(Uri.EscapeDataString(Nachricht));\r\n for (int i = 0; i &lt; UriRfc3986CharsToEscape.Length; i++)\r\n {\r\n   escaped.Replace(UriRfc3986CharsToEscape[i],\r\n   Uri.HexEscape(UriRfc3986CharsToEscape[i][0]));\r\n }\r\n Nachricht = escaped.ToString();\r\n\r\n string FFReqParameters = \"format=xml&amp;body=\" + Nachricht;\r\n string OAuthReqParameters = \"\";\r\n string RequestMethod = \"POST\";\r\n\r\n \/\/die Tokens und Keys\r\n string AccessToken = textBoxAccessToken.Text;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\r\n string AccessSecret = textBoxAccessTokenSecret.Text;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\r\n string ConsumerKey = \"???\";\r\n string ConsumerSecret = \"???\";\r\n\r\n \/\/ Zeit und Nonce lassen sich mit Hilfe von OAuthBase einfach generieren\r\n string Nonce = oAuth.GenerateNonce();\r\n string Zeitstempel = oAuth.GenerateTimeStamp();\r\n\r\n \/\/ Die URL muss mit Parametern (auch bei POST!) als String und vorliegen\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\r\n string APIUrl = \"<a href=\"http:\/\/friendfeed-api.com\/v2\/entry\">http:\/\/friendfeed-api.com\/v2\/entry<\/a>\" + \"?\" + FFReqParameters;\r\n Uri APIUri = new Uri(APIUrl);\r\n\r\n \/\/ Jetzt die Signature generieren\r\n \/\/ au\u00dferdem wird hier die APIUrl normalisiert\r\n \/\/ und OAuthReqParameters generiert\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\r\n String signature = oAuth.GenerateSignature(APIUri, ConsumerKey, ConsumerSecret,\r\n   AccessToken, AccessSecret, RequestMethod, Zeitstempel,\r\n   Nonce, out APIUrl, out OAuthReqParameters);\r\n\r\n \/\/ die Signatur fehlt noch im vorbereiteten Request\r\n OAuthReqParameters = OAuthReqParameters + \"&amp;\" + \"oauth_signature=\" + signature;\r\n\r\n \/\/ Senden ...\r\n string AntwortString = \"\";\r\n Byte[] Antwort;\r\n try\r\n {\r\n   Antwort = myWebClient.UploadData(APIUri,\r\n   RequestMethod, Encoding.UTF8.GetBytes(OAuthReqParameters));\r\n   AntwortString = System.Text.Encoding.ASCII.GetString(Antwort);\r\n   System.Windows.Forms.MessageBox.Show(\"Erfolgt - Antwort: \" + AntwortString);\r\n }\r\n catch (WebException ex)\r\n {\r\n   System.Windows.Forms.MessageBox.Show(ex.Message);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\r\n }\r\n}<\/pre>\n<p>Noch ein abschlie\u00dfender Tipp: Die FriendFeed Server sind sehr h\u00e4ufig \u00fcberlastet. Es lohnt sich also, einen Vorgang zwei oder dreimal zu wiederholen, bevor man einen Fehler im eigenen Code sucht.<\/p>\n<p>Und hier noch die Codebeispiele in VisualBasic:<\/p>\n<p><a href=\"http:\/\/www.frank-it-beratung.de\/tutorialsetc\/FriendFeed.vb.txt\" target=\"_blank\">FriendFeed.vb<\/a> (daf\u00fcr ben\u00f6tigen Sie <a href=\"http:\/\/www.frank-it-beratung.de\/tutorialsetc\/OAuthBase.vb.txt\" target=\"_blank\">OAuthBase.vb<\/a>, Details dazu finden Sie <a title=\"Twitter API mit OAuth und Visual\u00a0Basic\" href=\"http:\/\/frank-it-beratung.com\/2010\/11\/11\/twitter-api-mit-oauth-und-visual-basic\/\" target=\"_blank\">hier<\/a>).<\/p>\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>Nach den vielen Tutorials zu Facebook heute mal etwas zu dem m. E. vielfach untersch\u00e4tzten Dienst FriendFeed.\u00a0Dessen API ist eine feine Sache, da zum einen der Zugriff trotz OAuth relativ unkompliziert ist (es gibt sogar noch einen Basic Auth Zugang, &hellip; <a href=\"https:\/\/frank-it-projekte.de\/blog\/2011\/03\/26\/tutorial-die-friendfeed-api-mit-c-oder-visual-basic\/\">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":[4,5,9,16,21],"tags":[23,72,75,33,55,84],"class_list":["post-567","post","type-post","status-publish","format-standard","hentry","category-api","category-c","category-friendfeed","category-programmierung","category-visual-basic","tag-net","tag-c","tag-friendfeed","tag-friendfeed-api","tag-vb","tag-visual-basic"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Tutorial: Die FriendFeed API mit C# (oder Visual Basic) - 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\/2011\/03\/26\/tutorial-die-friendfeed-api-mit-c-oder-visual-basic\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tutorial: Die FriendFeed API mit C# (oder Visual Basic) - Socialweb Dev-Blog \/\/ Frank-IT-Beratung\" \/>\n<meta property=\"og:description\" content=\"Nach den vielen Tutorials zu Facebook heute mal etwas zu dem m. E. vielfach untersch\u00e4tzten Dienst FriendFeed.\u00a0Dessen API ist eine feine Sache, da zum einen der Zugriff trotz OAuth relativ unkompliziert ist (es gibt sogar noch einen Basic Auth Zugang, &hellip; Weiterlesen &rarr;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/frank-it-projekte.de\/blog\/2011\/03\/26\/tutorial-die-friendfeed-api-mit-c-oder-visual-basic\/\" \/>\n<meta property=\"og:site_name\" content=\"Socialweb Dev-Blog \/\/ Frank-IT-Beratung\" \/>\n<meta property=\"article:published_time\" content=\"2011-03-26T17:57:50+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2012-09-29T11:03:54+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/frank-it-beratung.de\/blog\/wp-content\/uploads\/2011\/03\/friendfeed_mit_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\\\/2011\\\/03\\\/26\\\/tutorial-die-friendfeed-api-mit-c-oder-visual-basic\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/frank-it-projekte.de\\\/blog\\\/2011\\\/03\\\/26\\\/tutorial-die-friendfeed-api-mit-c-oder-visual-basic\\\/\"},\"author\":{\"name\":\"Simon A. Frank\",\"@id\":\"https:\\\/\\\/frank-it-projekte.de\\\/blog\\\/#\\\/schema\\\/person\\\/e31d0c55b9277739ef6c87d5e7bb47a2\"},\"headline\":\"Tutorial: Die FriendFeed API mit C# (oder Visual Basic)\",\"datePublished\":\"2011-03-26T17:57:50+00:00\",\"dateModified\":\"2012-09-29T11:03:54+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/frank-it-projekte.de\\\/blog\\\/2011\\\/03\\\/26\\\/tutorial-die-friendfeed-api-mit-c-oder-visual-basic\\\/\"},\"wordCount\":556,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\\\/\\\/frank-it-projekte.de\\\/blog\\\/#\\\/schema\\\/person\\\/e31d0c55b9277739ef6c87d5e7bb47a2\"},\"image\":{\"@id\":\"https:\\\/\\\/frank-it-projekte.de\\\/blog\\\/2011\\\/03\\\/26\\\/tutorial-die-friendfeed-api-mit-c-oder-visual-basic\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/frank-it-beratung.de\\\/blog\\\/wp-content\\\/uploads\\\/2011\\\/03\\\/friendfeed_mit_csharp.jpg\",\"keywords\":[\".net\",\"C#\",\"FriendFeed\",\"FriendFeed API\",\"VB\",\"Visual Basic\"],\"articleSection\":[\"API\",\"C#\",\"FriendFeed\",\"Programmierung\",\"Visual Basic\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/frank-it-projekte.de\\\/blog\\\/2011\\\/03\\\/26\\\/tutorial-die-friendfeed-api-mit-c-oder-visual-basic\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/frank-it-projekte.de\\\/blog\\\/2011\\\/03\\\/26\\\/tutorial-die-friendfeed-api-mit-c-oder-visual-basic\\\/\",\"url\":\"https:\\\/\\\/frank-it-projekte.de\\\/blog\\\/2011\\\/03\\\/26\\\/tutorial-die-friendfeed-api-mit-c-oder-visual-basic\\\/\",\"name\":\"Tutorial: Die FriendFeed API mit C# (oder Visual Basic) - Socialweb Dev-Blog \\\/\\\/ Frank-IT-Beratung\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/frank-it-projekte.de\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/frank-it-projekte.de\\\/blog\\\/2011\\\/03\\\/26\\\/tutorial-die-friendfeed-api-mit-c-oder-visual-basic\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/frank-it-projekte.de\\\/blog\\\/2011\\\/03\\\/26\\\/tutorial-die-friendfeed-api-mit-c-oder-visual-basic\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/frank-it-beratung.de\\\/blog\\\/wp-content\\\/uploads\\\/2011\\\/03\\\/friendfeed_mit_csharp.jpg\",\"datePublished\":\"2011-03-26T17:57:50+00:00\",\"dateModified\":\"2012-09-29T11:03:54+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/frank-it-projekte.de\\\/blog\\\/2011\\\/03\\\/26\\\/tutorial-die-friendfeed-api-mit-c-oder-visual-basic\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/frank-it-projekte.de\\\/blog\\\/2011\\\/03\\\/26\\\/tutorial-die-friendfeed-api-mit-c-oder-visual-basic\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/frank-it-projekte.de\\\/blog\\\/2011\\\/03\\\/26\\\/tutorial-die-friendfeed-api-mit-c-oder-visual-basic\\\/#primaryimage\",\"url\":\"http:\\\/\\\/frank-it-beratung.de\\\/blog\\\/wp-content\\\/uploads\\\/2011\\\/03\\\/friendfeed_mit_csharp.jpg\",\"contentUrl\":\"http:\\\/\\\/frank-it-beratung.de\\\/blog\\\/wp-content\\\/uploads\\\/2011\\\/03\\\/friendfeed_mit_csharp.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/frank-it-projekte.de\\\/blog\\\/2011\\\/03\\\/26\\\/tutorial-die-friendfeed-api-mit-c-oder-visual-basic\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\\\/\\\/frank-it-projekte.de\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tutorial: Die FriendFeed API mit C# (oder Visual Basic)\"}]},{\"@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":"Tutorial: Die FriendFeed API mit C# (oder Visual Basic) - 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\/2011\/03\/26\/tutorial-die-friendfeed-api-mit-c-oder-visual-basic\/","og_locale":"de_DE","og_type":"article","og_title":"Tutorial: Die FriendFeed API mit C# (oder Visual Basic) - Socialweb Dev-Blog \/\/ Frank-IT-Beratung","og_description":"Nach den vielen Tutorials zu Facebook heute mal etwas zu dem m. E. vielfach untersch\u00e4tzten Dienst FriendFeed.\u00a0Dessen API ist eine feine Sache, da zum einen der Zugriff trotz OAuth relativ unkompliziert ist (es gibt sogar noch einen Basic Auth Zugang, &hellip; Weiterlesen &rarr;","og_url":"https:\/\/frank-it-projekte.de\/blog\/2011\/03\/26\/tutorial-die-friendfeed-api-mit-c-oder-visual-basic\/","og_site_name":"Socialweb Dev-Blog \/\/ Frank-IT-Beratung","article_published_time":"2011-03-26T17:57:50+00:00","article_modified_time":"2012-09-29T11:03:54+00:00","og_image":[{"url":"http:\/\/frank-it-beratung.de\/blog\/wp-content\/uploads\/2011\/03\/friendfeed_mit_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\/2011\/03\/26\/tutorial-die-friendfeed-api-mit-c-oder-visual-basic\/#article","isPartOf":{"@id":"https:\/\/frank-it-projekte.de\/blog\/2011\/03\/26\/tutorial-die-friendfeed-api-mit-c-oder-visual-basic\/"},"author":{"name":"Simon A. Frank","@id":"https:\/\/frank-it-projekte.de\/blog\/#\/schema\/person\/e31d0c55b9277739ef6c87d5e7bb47a2"},"headline":"Tutorial: Die FriendFeed API mit C# (oder Visual Basic)","datePublished":"2011-03-26T17:57:50+00:00","dateModified":"2012-09-29T11:03:54+00:00","mainEntityOfPage":{"@id":"https:\/\/frank-it-projekte.de\/blog\/2011\/03\/26\/tutorial-die-friendfeed-api-mit-c-oder-visual-basic\/"},"wordCount":556,"commentCount":2,"publisher":{"@id":"https:\/\/frank-it-projekte.de\/blog\/#\/schema\/person\/e31d0c55b9277739ef6c87d5e7bb47a2"},"image":{"@id":"https:\/\/frank-it-projekte.de\/blog\/2011\/03\/26\/tutorial-die-friendfeed-api-mit-c-oder-visual-basic\/#primaryimage"},"thumbnailUrl":"http:\/\/frank-it-beratung.de\/blog\/wp-content\/uploads\/2011\/03\/friendfeed_mit_csharp.jpg","keywords":[".net","C#","FriendFeed","FriendFeed API","VB","Visual Basic"],"articleSection":["API","C#","FriendFeed","Programmierung","Visual Basic"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/frank-it-projekte.de\/blog\/2011\/03\/26\/tutorial-die-friendfeed-api-mit-c-oder-visual-basic\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/frank-it-projekte.de\/blog\/2011\/03\/26\/tutorial-die-friendfeed-api-mit-c-oder-visual-basic\/","url":"https:\/\/frank-it-projekte.de\/blog\/2011\/03\/26\/tutorial-die-friendfeed-api-mit-c-oder-visual-basic\/","name":"Tutorial: Die FriendFeed API mit C# (oder Visual Basic) - Socialweb Dev-Blog \/\/ Frank-IT-Beratung","isPartOf":{"@id":"https:\/\/frank-it-projekte.de\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/frank-it-projekte.de\/blog\/2011\/03\/26\/tutorial-die-friendfeed-api-mit-c-oder-visual-basic\/#primaryimage"},"image":{"@id":"https:\/\/frank-it-projekte.de\/blog\/2011\/03\/26\/tutorial-die-friendfeed-api-mit-c-oder-visual-basic\/#primaryimage"},"thumbnailUrl":"http:\/\/frank-it-beratung.de\/blog\/wp-content\/uploads\/2011\/03\/friendfeed_mit_csharp.jpg","datePublished":"2011-03-26T17:57:50+00:00","dateModified":"2012-09-29T11:03:54+00:00","breadcrumb":{"@id":"https:\/\/frank-it-projekte.de\/blog\/2011\/03\/26\/tutorial-die-friendfeed-api-mit-c-oder-visual-basic\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/frank-it-projekte.de\/blog\/2011\/03\/26\/tutorial-die-friendfeed-api-mit-c-oder-visual-basic\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/frank-it-projekte.de\/blog\/2011\/03\/26\/tutorial-die-friendfeed-api-mit-c-oder-visual-basic\/#primaryimage","url":"http:\/\/frank-it-beratung.de\/blog\/wp-content\/uploads\/2011\/03\/friendfeed_mit_csharp.jpg","contentUrl":"http:\/\/frank-it-beratung.de\/blog\/wp-content\/uploads\/2011\/03\/friendfeed_mit_csharp.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/frank-it-projekte.de\/blog\/2011\/03\/26\/tutorial-die-friendfeed-api-mit-c-oder-visual-basic\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/frank-it-projekte.de\/blog\/"},{"@type":"ListItem","position":2,"name":"Tutorial: Die FriendFeed API mit C# (oder Visual Basic)"}]},{"@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-99","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/frank-it-projekte.de\/blog\/wp-json\/wp\/v2\/posts\/567","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=567"}],"version-history":[{"count":1,"href":"https:\/\/frank-it-projekte.de\/blog\/wp-json\/wp\/v2\/posts\/567\/revisions"}],"predecessor-version":[{"id":920,"href":"https:\/\/frank-it-projekte.de\/blog\/wp-json\/wp\/v2\/posts\/567\/revisions\/920"}],"wp:attachment":[{"href":"https:\/\/frank-it-projekte.de\/blog\/wp-json\/wp\/v2\/media?parent=567"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/frank-it-projekte.de\/blog\/wp-json\/wp\/v2\/categories?post=567"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/frank-it-projekte.de\/blog\/wp-json\/wp\/v2\/tags?post=567"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}